terça-feira, 31 de julho de 2012

Abrir em nova janela com h:commandButton


<h:commandButton action="#{bean.imprimir()}" value="imprimir"
onclick="this.form.target='_blank'">

Fazer JSF passar parâmetros via GET através do ManagedBean

Útil quando é necessário passar parâmetros via GET porém, os parâmetros ainda não estão no ManagedBean.


View


<h:commandButton action="#{flpImportacaoGrupoMB.imprimir()}" value="imprimir"
onclick="this.form.target='_blank'">

Faz com que seja aberta uma nova janela do navegador. Dessa forma você pode ter um form com botões abrindo na mesma janela ou em outra.

ManagedBean

public String imprimir(){
   return "relFlpParametrizadoGrupo?faces-redirect=true&grupo="+grupoSelecionado
+"&campo="+campoDataSelecionado
+"&tipoProcesso="+tipoProcessoSelecionado
+"&dataI="+getDataInicioFmt()
+"&dataF="+getDataFimFmt();
}

Converte de POST para GET.

quarta-feira, 25 de julho de 2012

Passar parâmetro via get no jsf 2

Página 1


<h:link target="_blank"
outcome="/pagina2" 
style="height:0px;width:0px;border-style:none;margin:0px;padding:0px;">
       <h:graphicImage value="/imagens/ImagensUtilizadas/16x16/doc6.png" />
       <f:param name="id" value="#{usuarioMB.id}"/>
</h:link>                              

Página 2

<ui:composition template="/templates/relatorio.xhtml">
       <f:metadata> 
           <f:viewParam name="id" value="#{usuarioMB.id}" />
       </f:metadata>

       <h:head>
             <meta http-equiv="content-Type" content="text/html; charset=utf-8" />
       </h:head>
       <ui:define name="centro">
             <h:form>
                    <h:outputText value="Id:" />
                    <h:outputText value="#{usuarioMB.usuario.id}"/>
                    <h:outputText value="Nome:"/>
                    <h:outputText value="#{usuarioMB.usuario.nome}"/>

             </h:form>
       </ui:define>
...

Recuperar dados do banco ao abrir a página 2:

Criar método no managed bean. 
@PostConstruct
public void carregar(){
   String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
            
   if(id != null && !id.equals("")){
      dao = new Dao<Usuario>(HibernateUtil.getSession(),  Usuario .class);
      usuariodao.get(Integer.parseInt(id) );
   }
}


sexta-feira, 20 de julho de 2012

java.lang.IllegalStateException: Cannot serialize a session while connected

Problema:
java.lang.IllegalStateException: Cannot serialize a session while connected

Local do erro (JSF):
valida.validaNavio(processoMB.processo.navio_id)

Causa do erro (Tipo do argumento incorreto):

public String validaNavio(String codigo){
     dao.loadByField("id", codigo);
}

Solução:
public String validaNavio(Integer codigo){
     dao.loadByField("id", codigo);
}

quinta-feira, 19 de julho de 2012

javax.faces.application.ViewExpiredException: viewId:/index.jsf - A exibição de /index.jsf não pôde ser restaurada.


javax.faces.application.ViewExpiredException: viewId:/index.jsf - A exibição de /index.jsf não pôde ser restaurada.

Para resolver, adicione as linhas abaixo no Web.xml

 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>client</param-value>
 </context-param>

sexta-feira, 29 de junho de 2012

@OneToOne com chave compartilhada


@Entity@DiscriminatorValue(value="S")@SequenceGenerator(name="seq_abreprocesso", sequenceName="seq_abreprocesso", allocationSize=1)public class ProcessoSc extends AbreProcesso implements Serializable{ @OneToOne(cascade = CascadeType.ALL) @PrimaryKeyJoinColumn(name="id") private Sc sc;
public Sc getSc() { return sc; }
public void setSc(Sc sc) { this.sc = sc; }
@Override public int hashCode() { return super.hashCode(); }
@Override public boolean equals(Object obj) { return super.equals(obj); } }


.public class Sc implements Serializable{ @Id @GeneratedValue(generator="fk_abreprocesso") @org.hibernate.annotations.GenericGenerator(name="fk_abreprocesso",strategy="foreign",parameters=@Parameter(name="property", value="processoSc" private Integer abreprocesso_id; @OneToOne(mappedBy="sc") private ProcessoSc processoSc;
        Get/Set...}



terça-feira, 26 de junho de 2012

Diferença entre datas


01.package br.com.furutani;
02.import java.util.Calendar;
03./**
04.* Calcula a diferença em dias entre a data de hoje e o dia 10/FEV/2008
05.* @author Roberto Jundi
06.*/
07.public class Calendario {
08. 
09.public static void main(String[] args) {
10.// Data inicial
11.Calendar dataInicio = Calendar.getInstance();
12.// Atribui a data de 10/FEV/2008
13.dataInicio.set(2008, Calendar.FEBRUARY, 10);
14. 
15.// Data de hoje
16.Calendar dataFinal = Calendar.getInstance();
17. 
18.// Calcula a diferença entre hoje e da data de inicio
19.long diferenca = dataFinal.getTimeInMillis() -
20.dataInicio.getTimeInMillis();
21. 
22.// Quantidade de milissegundos em um dia
23.int tempoDia = 1000 60 60 24;
24. 
25.long diasDiferenca = diferenca / tempoDia;
26. 
27.System.out.println("Entre a data inicial e final são " +
28.diasDiferenca + " dias de diferença.");
29. 
30.}
31. 
32.}

Fonte: http://www.furutani.com.br/2009/02/calculo-da-diferenca-entre-datas-em-java/