Boa noite caros amigos do GUJ, estou escasso de novas linhas de raciocínio jah q meu código QUASE funciona completamente, não ví uma forma melhor de fazer
Tenho uma aplicação Mojarra 2 com PrimeFaces2. Existe um formulário de busca tal que, se um dos campos foi preenchido para a busca, os demais devem seguir desabilitados.
Então implementei da seguinte maneira, usando ajax:(No caso são 3 campos, u1 InputText e 2 InputMask, todos do Prime)
->Criei as variáveis booleanas para fazer referência ao atributo disabled nas tags dos componentes , (funciona)
->Fiz binding do componente com seu respectivo objeto referenciador no MBean, (funciona)
->Usei a tag <f:ajax listner=“blur”> para chamar tratamento de habilitar ou desabilitar os campos pelo MBean,(funciona)
->Declarei uma função que chamo com o ajax(para tratamento explicado na linha anterior) e recebe um AjaxBehaviorEvent,(funciona)
->Dentro do Bean faço o cast de UIInput para HtmlInputText, inclusive para o inputMask do Prime e tento setar propriedade disabled a partir da manipulação das variáviaveis booleanas, (NÃO funciona)
O interessante é que após o submit da busca a alteração das variáveis funciona.
Abaixo segue o código, alguém poderia me ajudar?
//Formulário
<h:form prependId="false">
<h:panelGrid id="pnDadosAtendente" columns="2">
<h:outputLabel id="olNomeAluno" value="Nome Completo:"
for="itNomeAluno" onfocus="true" />
<p:focus>
<p:inputText id="itNomeAluno"
value="#{ProtocoloBean.nome}"
binding="#{ProtocoloBean.txtConsultaMatricula}"
readonly="#{ProtocoloBean.txt1}">
<f:ajax event="blur" listener="#{ProtocoloBean.processaEntradasBusca}" execute="itNomeAluno itMatricula itCPF"/>
</p:inputText>
</p:focus>
<h:outputLabel id="olMatricula" value="Matricula:"
for="itMatricula" onfocus="true" />
<p:inputText id="itMatricula"
value="#{ProtocoloBean.nrMatricula}"
binding="#{ProtocoloBean.txtConsultaMatricula1}"
disabled="#{ProtocoloBean.txt2}">
<f:ajax event="blur" listener="#{ProtocoloBean.processaEntradasBusca}" />
</p:inputText>
<h:outputLabel id="olCPF" value="CPF:" for="itCPF" onfocus="true" />
<p:inputMask id="itCPF"
mask="999.999.999-99"
value="#{ProtocoloBean.cpf}"
binding="#{ProtocoloBean.txtConsultaMatricula2}"
disabled="#{ProtocoloBean.txt3}">
<f:ajax event="blur" listener="#{ProtocoloBean.processaEntradasBusca}" />
</p:inputMask>
</h:panelGrid>
<p:commandButton id="btBuscarAluno" image="ui-icon ui-icon-search" action="#{ProtocoloBean.buscaDadosAluno}" type="submit"/>
<br/>
<br/>
<p:dataTable id="tbCadastroAlunoApi"
var="aluno"
value="#{ProtocoloBean.cadAlunoApi.lista}"
selection="#{ProtocoloBean.dadosAlunoApi}"
selectionMode="single"
onRowSelectUpdate="display"
scrollable="true"
height="270">
<p:column style="width:200px;text-align:center">
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{aluno.NOME_PESSOA}" style="width:200px"/>
</p:column>
<p:column style="width:200px;text-align:center">
<f:facet name="header">
<h:outputText value="CPF" style="width:200px"/>
</f:facet>
<h:outputText value="#{aluno.CPF}" />
</p:column>
<p:column style="width:200px;text-align:center">
<f:facet name="header">
<h:outputText value="Matricula" style="width:200px"/>
</f:facet>
<h:outputText value="#{aluno.MATR_ALUNO}" />
</p:column>
<p:column style="width:200px;text-align:center">
<f:facet name="header">
<h:outputText value="Ingresso" style="width:200px"/>
</f:facet>
<h:outputText value="#{aluno.PERIODO_INGRESSO}" />
</p:column>
<p:column style="width:200px;text-align:center">
<f:facet name="header">
<h:outputText value="Status" style="width:200px"/>
</f:facet>
<h:outputText value="#{aluno.FORMA_EVASAO}" />
</p:column>
<p:column style="width:200px;text-align:center">
<f:facet name="header">
<h:outputText value="Curso" style="width:200px" />
</f:facet>
<h:outputText value="#{aluno.NOME_CURSO}" />
</p:column>
<p:column style="width:200px;text-align:center">
<f:facet name="header">
<h:outputText value="Opções" style="width:200px"/>
</f:facet>
<p:commandButton image="ui-icon ui-icon-search"
action="#{ProtocoloBean.selecionarCadastroAluno(aluno)}" type="push" />
</p:column>
</p:dataTable>
</h:form>
//Mbean
...
@ManagedBean(name = "ProtocoloBean")
@SessionScoped
public class ProtocoloBean {
[color=darkred] private UIInput txtConsultaMatricula;
private UIInput txtConsultaMatricula1;
private UIInput txtConsultaMatricula2;
[/color]
[color=red]private Boolean txt1=Boolean.FALSE;
private Boolean txt2=Boolean.FALSE;
private Boolean txt3=Boolean.FALSE;[/color]
// campos para pesquisa na API
private String nome = new String();
private String cpf = new String();
private String nrMatricula = new String();
public ProtocoloBean() {
...
}
public void processaEntradasBusca(AjaxBehaviorEvent event){
HtmlInputText txtNome = (HtmlInputText)this.txtConsultaMatricula;
HtmlInputText txtCpf = (HtmlInputText)this.txtConsultaMatricula1;
HtmlInputText txtMat = (HtmlInputText)this.txtConsultaMatricula2;
if ( (UIComponent)event.getSource() == this.txtConsultaMatricula ) {
if((this.nome!=null&&(!this.nome.equals("")))){
/*setTxt1(Boolean.FALSE);
setTxt2(Boolean.TRUE);
setTxt3(Boolean.TRUE);*/
this.cpf = null;
this.nrMatricula = null;
/*txtNome.setDisabled(true);
txtCpf.setDisabled(true);
txtMat.setDisabled(true);*/
System.out.println("Passei 1.");
}
/*if ( (String)txtConsultaMatricula.getValue()!=null && !((String)txtConsultaMatricula.getValue()).equals("")) {
setTxt1(Boolean.FALSE);
setTxt2(Boolean.TRUE);
setTxt3(Boolean.TRUE);
System.out.println("Passei 1.");
}else{
setTxt1(Boolean.FALSE);
setTxt2(Boolean.FALSE);
setTxt3(Boolean.FALSE);
System.out.println("Passei 1.11");
}*/
} else if ( (UIComponent)event.getSource() == this.txtConsultaMatricula1 ){
if((this.nrMatricula!=null&&(!this.nrMatricula.equals("")))){
txtCpf.setReadonly(true);
txtNome.setReadonly(true);
/*setTxt1(Boolean.TRUE);
setTxt2(Boolean.FALSE);
setTxt3(Boolean.TRUE);*/
System.out.println("Passei 2.");
}
/*if ( (String)txtConsultaMatricula1.getValue()!=null && !((String)txtConsultaMatricula1.getValue()).equals("")) {
setTxt2(Boolean.FALSE);
setTxt1(Boolean.TRUE);
setTxt3(Boolean.TRUE);
System.out.println("Passei 2.");
}else{
setTxt1(Boolean.FALSE);
setTxt2(Boolean.FALSE);
setTxt3(Boolean.FALSE);
System.out.println("Passei 2.11");
}*/
} else if ( (UIComponent)event.getSource() == this.txtConsultaMatricula2 ){
if(this.cpf!=null&&(!this.cpf.equals(""))){
txtNome.setReadonly(true);
txtMat.setReadonly(true);
/*setTxt1(Boolean.TRUE);
setTxt2(Boolean.TRUE);
setTxt3(Boolean.FALSE);*/
System.out.println("Passei 3.");
}
/*if ( (String)txtConsultaMatricula2.getValue()!=null && !((String)txtConsultaMatricula2.getValue()).equals("")) {
setTxt3(Boolean.FALSE);
setTxt1(Boolean.TRUE);
setTxt2(Boolean.TRUE);
System.out.println("Passei 3.");
}else{
setTxt1(Boolean.FALSE);
setTxt2(Boolean.FALSE);
setTxt3(Boolean.FALSE);
System.out.println("Passei 3.11");
}*/
}
}
public String redirectTipoSolicitacao() {
String retorno = new String();
try {
retorno = "/view/tipoSolicitacaoProtocolo.xhtml?faces-redirect=true";
} catch (Exception e) {
System.out.println("ERRO NO RETORNO");
}
return retorno;
}
public String redirectbuscaAluno() {
String retorno = new String();
try {
retorno = "/view/buscaAluno.xhtml?faces-redirect=true";
} catch (Exception e) {
System.out.println("ERRO NO RETORNO");
}
return retorno;
}
public int getIndTipoSolicitacao() {
return indTipoSolicitacao;
}
public void setIndTipoSolicitacao(int indTipoSolicitacao) {
this.indTipoSolicitacao = indTipoSolicitacao;
}
/**
* @return the txt1
*/
public Boolean getTxt1() {
return txt1;
}
/**
* @param txt1 the txt1 to set
*/
public void setTxt1(Boolean txt1) {
this.txt1 = txt1;
}
/**
* @return the txt2
*/
public Boolean getTxt2() {
return txt2;
}
/**
* @param txt2 the txt2 to set
*/
public void setTxt2(Boolean txt2) {
this.txt2 = txt2;
}
/**
* @return the txt3
*/
public Boolean getTxt3() {
return txt3;
}
/**
* @param txt3 the txt3 to set
*/
public void setTxt3(Boolean txt3) {
this.txt3 = txt3;
}
/**
* @return the txtConsultaMatricula1
*/
public UIInput getTxtConsultaMatricula1() {
return txtConsultaMatricula1;
}
/**
* @param txtConsultaMatricula1 the txtConsultaMatricula1 to set
*/
public void setTxtConsultaMatricula1(UIInput txtConsultaMatricula1) {
this.txtConsultaMatricula1 = txtConsultaMatricula1;
}
/**
* @return the txtConsultaMatricula2
*/
public UIInput getTxtConsultaMatricula2() {
return txtConsultaMatricula2;
}
/**
* @param txtConsultaMatricula2 the txtConsultaMatricula2 to set
*/
public void setTxtConsultaMatricula2(UIInput txtConsultaMatricula2) {
this.txtConsultaMatricula2 = txtConsultaMatricula2;
}
/**
* @return the nome
*/
public String getNome() {
return nome;
}
/**
* @param nome the nome to set
*/
public void setNome(String nome) {
this.nome = nome;
}
/**
* @return the cpf
*/
public String getCpf() {
return cpf;
}
/**
* @param cpf the cpf to set
*/
public void setCpf(String cpf) {
this.cpf = cpf;
}
/**
* @return the nrMatricula
*/
public String getNrMatricula() {
return nrMatricula;
}
/**
* @param nrMatricula the nrMatricula to set
*/
public void setNrMatricula(String nrMatricula) {
this.nrMatricula = nrMatricula;
}
}
}