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>