Boa tarde caros amigos do GUJ, tenho uma aplicação desenvolvida utilizando JSF e estou com o seguinte problema:
Partindo de uma tela(página) qualquer, quando a aplição é redirecionada pelo controlador de paginas da mesma para um página
X eu passo por uma acao do commandButton e dentro desta acao eu dou um setVariavel(…) para que o efeito desta se prolongue
na pagina X. Na verdade eu preciso habiltar/desabilitar campos dependendo de uma condição que tenho no negócio da minha aplicação;
Porém o efeito de setVariavel não se prolonga na página X. De acordo com a sequência do código fonte que segue notem melhor o problema.
Exemplo de botão que chama a pagina X.
<p:commandButton id="cbOk" value="OK" action="#{ProtocoloBean.redirectFormProtocolo}"/>
Ação disparada no controlador/MBean, o que enteressa é o método disableTabeds.
public String redirectFormProtocolo() {
...
disableTabeds();
return "/view/protocoloAlteracaoDadosPessoais.xhtml?faces-redirect=true";
}
public void disableTabeds(){
if ( ( getProtocolo().getEstruturaOrganizacional().getIdUnidade() != getProtocolo().getFuncionario().getEstruturaOrganizacional().getIdUnidade() )
&& ( getProtocolo().getStatusProtocolo().getIdStatusProtocolo() == 1) ){
this.setDisabled_0(Boolean.FALSE);
this.setDisabled_1(Boolean.FALSE);
this.setDisabled_2(Boolean.TRUE);
this.setDisabled_3(Boolean.FALSE);
}else if( (getProtocolo().getEstruturaOrganizacional().getIdUnidade() != getProtocolo().getFuncionario().getEstruturaOrganizacional().getIdUnidade() )
&& ( getProtocolo().getStatusProtocolo().getIdStatusProtocolo() == 2 ) ) {
this.setDisabled_0(Boolean.TRUE);
this.setDisabled_1(Boolean.TRUE);
this.setDisabled_2(Boolean.FALSE);
this.setDisabled_3(Boolean.FALSE);
}else if(( getProtocolo().getEstruturaOrganizacional().getIdUnidade() != getProtocolo().getFuncionario().getEstruturaOrganizacional().getIdUnidade() )
&& ( getProtocolo().getStatusProtocolo().getIdStatusProtocolo() == 4 ) ) {
this.setDisabled_0(Boolean.TRUE);
this.setDisabled_1(Boolean.TRUE);
this.setDisabled_2(Boolean.TRUE);
this.setDisabled_3(Boolean.TRUE);
}
}
Trecho da pagina X onde os campos serão habilitados ou desdabilitados.
<h:outputLabel id="olDeficiencia" value="Deficiência:" for="somDeficiencia" onfocus="true" />
<h:selectOneMenu id="somDeficiencia" value="#{ProtocoloBean.protocolo.deficiencia.idDeficiencia}" disabled="#{disabled_0}">
<f:selectItem itemLabel="Não Possui" itemValue="0" />
<f:selectItems value="#{UtilidadesController.listaDeficiencia}" var="listaDef"
itemLabel="#{listaDef.nmDeficiencia}" itemValue="#{listaDef.idDeficiencia}" />
</h:selectOneMenu>
<h:outputLabel id="olPerfilSaude" value="Perfil de Saúde:"
for="somPerfilSaude" onfocus="true" />
<h:selectOneMenu id="somPerfilSaude" value="#{ProtocoloBean.protocolo.perfilSaude.idPerfilSaude}" disabled="#{disabled_0}">
<f:selectItem itemLabel="Não Possui complicações" itemValue="0" />
<f:selectItems value="#{UtilidadesController.listaPerfilSaude}" var="listaPerSaude"
itemLabel="#{listaPerSaude.nmPerfilSaude}" itemValue="#{listaPerSaude.idPerfilSaude}" />
</h:selectOneMenu>
..................
Não funciona de forma alguma, de todo jeito os campos na pagina X permanecem habilitados.
Parece ter a ver com a instância das variáveis acessadas para habilitar/desabilitar os campos na pagina X no momento que ela é montada ser anterior ao momento que eu modifico
os valores destas variáveis.
Alguém pode me ajudar?
Um abraço e obrigado pela atenção.