quarta-feira, 17 de abril de 2013
JSF: Setar foco em um elemento que foi renderizado
<p:outputPanel id="optPanel">
<h:inputText value="#{myBean.nome}" id="nome"/>
<h:inputText>
<a4j:ajax event="complete" render="optPanel" oncomplete="nome.focus();"/>
</h:inputText>
</p:outputPanel>
sexta-feira, 15 de março de 2013
limitar o número de registros retornados em uma consulta SQL
DB2 -- select * from table fetch first 10 rows only
Informix, InterBase/Firebird, SKIP -- select first 10 * from table
Microsoft SQL Server and Access -- select top 10 * from table
MySQL, PostgreSQL, SQLite, HSQL/H2 -- select * from table limit 10
Oracle -- select * from table where rownum <= 10
Fonte: http://pontodebug.blogspot.com.br/2011/01/como-limitar-o-numero-de-registros.html
sexta-feira, 22 de fevereiro de 2013
JSF: selectBooleanCheckbox não funciona no primeiro click
Problema:
selectBooleanCheckbox não funciona no primeiro click, apenas do segundo em diante.
<a4j:commandButton
image="/resources/images/16x16/add.png"
execute="@form"
render="baixaPane"
oncomplete="#{rich:component('baixaPane')}.show();">
</a4j:commandButton>
<rich:column>
<f:facet name="header">BAIXAR</f:facet>
<h:selectBooleanCheckbox value="#{lancamento.baixar}"
valueChangeListener="#{movimentoContaMB.receptor}" >
<a4j:ajax execute="@form" render="@form" />
</h:selectBooleanCheckbox>
</rich:column>
selectBooleanCheckbox não funciona no primeiro click, apenas do segundo em diante.
<a4j:commandButton
image="/resources/images/16x16/add.png"
execute="@form"
render="baixaPane"
oncomplete="#{rich:component('baixaPane')}.show();">
</a4j:commandButton>
<rich:column>
<f:facet name="header">BAIXAR</f:facet>
<h:selectBooleanCheckbox value="#{lancamento.baixar}"
valueChangeListener="#{movimentoContaMB.receptor}" >
<a4j:ajax execute="@form" render="@form" />
</h:selectBooleanCheckbox>
</rich:column>
Solução:
Remover o render do a4j:commandButton.
<a4j:commandButton
image="/resources/images/16x16/add.png"
execute="@form"
oncomplete="#{rich:component('baixaPane')}.show();">
</a4j:commandButton>
image="/resources/images/16x16/add.png"
execute="@form"
oncomplete="#{rich:component('baixaPane')}.show();">
</a4j:commandButton>
terça-feira, 5 de fevereiro de 2013
Hibernate: Multipos @DiscriminatorValue / Multiple discriminator values
// Classe Base
@DiscriminatorFormula("case when str_origem in ('CP','FE') then 'CP' when str_origem in ('CR','FE') then 'CR' when str_origem in ('CP','CR','FE') then 'AL' end")
@DiscriminatorValue(value="AL")
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class LancamentoCc implements Serializable{
}
// SubClasse
@Entity
@DiscriminatorValue(value="CP")
public class ContaPagar extends LancamentoCc implements Serializable,Cloneable{
}
JSF: Exibir valor de h:inputText em managed bean
FacesContext ctx = FacesContext.getCurrentInstance();
Map<String,String> request = ctx.getExternalContext().getRequestParameterMap();
String data = request.get("NRO_PROCESSO");
Map<String,String> request = ctx.getExternalContext().getRequestParameterMap();
String data = request.get("NRO_PROCESSO");
sexta-feira, 1 de fevereiro de 2013
Firebird: Exibir total de registros de todas as tabelas
CREATE PROCEDURE SOMAREGISTROS
RETURNS (
TABELA VARCHAR (31),
QTD_REG INTEGER)
AS declare variable comando varchar(100);
declare variable qtdtot integer;
declare variable qtdtab integer;
begin
qtdtot = 0;
qtdtab = 0;
for select rdb$relation_name
from rdb$relations
where rdb$flags = 1 and rdb$view_blr is null
order by 1
into :tabela do
begin
qtdtab = qtdtab + 1;
comando = 'select count(*) from ' || :tabela;
execute statement :comando into :qtd_reg;
qtdtot = :qtdtot + :qtd_reg;
suspend;
end
tabela = :qtdtab || ' Tabelas - Total:';
qtd_reg = :qtdtot;
suspend;
end
segunda-feira, 21 de janeiro de 2013
Ignorar acentos no Oracle/Hibernate
No HibernateUtil:
Funciona para todas as queries, porém, pode haver perda de performance.
public static Session getSession() {
if (SESSION_THREAD.get() == null) {
Session session = factory.openSession();
session.createSQLQuery("alter session set nls_comp=linguistic").executeUpdate();
session.createSQLQuery("alter session set nls_sort=binary_ai").executeUpdate();
SESSION_THREAD.set(session);
}
return (Session) SESSION_THREAD.get();
}
Diretamente no método de pesquisa:
public List<ContaPagar> findContaPagar(String campoPesquisa, String valor,Integer startRow, Integer MaxRows) {
List<ContaPagar> list = new ArrayList<ContaPagar>();
try{
session.createSQLQuery("alter session set nls_comp=linguistic").executeUpdate();
session.createSQLQuery("alter session set nls_sort=binary_ai").executeUpdate();
session.createSQLQuery("alter session set nls_sort=binary_ai").executeUpdate();
Criteria c = session.createCriteria(ContaPagar.class,"contaPagar");
c.createAlias("contaPagar.historicoFinanceiro", "historico",JoinType.LEFT_OUTER_JOIN);
c.setCacheable(true);
c.setMaxResults(MaxRows);
c.setFirstResult(startRow);
c.add(Restrictions.eq(campoPesquisa, StringToObject.toObject(valor)));
list = c.list();
}catch (Exception e) {
e.printStackTrace();
}
return list;
}
Assinar:
Postagens (Atom)