Gente…
Estou deparando com algo que para muitos pode parecer muito trivial.
Tenho um combo com uma lista de tipo de contato: E-mail, Telefone Residencial, Celular, etc.
Para cada tipo selecionado é renderizado um campo com as suas respectivas validações e sempre sentando numa mesma variável String descricaoContato.
Ou seja, o usuário pode adicionar um tipo de contato por vez.
Qual problema ?
Bem, estou usando rendered para eles. Assim, logo a pagina é exibida, todos estão escondidos. Acontece que, ao selecionar um tipo de contato, o campo respectivo aparece, porém, o valor que insiro não é submetido. A variável permanece como null.
Até hoje, pensava que uma vez que faço um render num campo inicialmente rendered = false e ele é apresentado, eu poderia inserir um valor porque ao ser submetido, com certeza o valor também seria. Mas, não é isso que está acontecendo.
<h:form id="edicao-contato">
<t:saveState value="#{empregadoBean.contato}"/>
<p:fieldset legend="#{titulo.novoContato}" styleClass="fdset-contato">
<h:panelGrid columns="4">
<h:outputLabel value="Tipo Contato:*" styleClass="label" />
<h:selectOneMenu label="Contato"
value="#{empregadoBean.contato.deTipoContato}" required="true"
tabindex="6">
<f:ajax event="change"
execute="#{empregadoBean.verificaEmailOuBip()}" render="@form" />
<f:selectItem itemValue="" itemLabel="::Selecione::" />
<f:selectItem itemValue="Bip" itemLabel="Bip" />
<f:selectItem itemValue="Celular" itemLabel="Celular" />
<f:selectItem itemValue="Comercial" itemLabel="Comercial" />
<f:selectItem itemValue="Email" itemLabel="Email" />
<f:selectItem itemValue="Fax" itemLabel="Fax" />
<f:selectItem itemValue="Residencial" itemLabel="Residencial" />
</h:selectOneMenu>
<h:outputLabel value="Contato:*" styleClass="label" />
<h:inputText id="emailBip" maxlength="70" size="70" required="true"
tabindex="7" label="Contato"
rendered="#{empregadoBean.emailOuBip}"
value="#{empregadoBean.contato.deContato}">
<f:validateLength maximum="70" />
</h:inputText>
<p:inputMask id="tel" value="#{empregadoBean.contato.deContato}"
required="true" tabindex="7" label="Contato"
mask="([telefone removido]" rendered="#{!empregadoBean.emailOuBip}" />
</h:panelGrid>
<h:panelGrid columns="4">
<h:outputLabel value="Complemento:" styleClass="label" />
<h:inputText tabindex="8" label="Complemento"
value="#{empregadoBean.contato.deComplementoContato}"
styleClass="inputEndereco">
<f:validateLength maximum="70" />
</h:inputText>
<h:outputLabel value="Prioridade:*" styleClass="label" />
<h:inputText value="#{empregadoBean.contato.nuPrioridade}"
styleClass="input" required="true" tabindex="9" maxlength="5" size="5"
label="Prioridade">
<f:convertNumber integerOnly="true" />
<f:validateLength maximum="5" />
</h:inputText>
</h:panelGrid>
<p:commandButton action="#{empregadoBean.salvarContato}"
value="#{btn.salvar}" tabindex="10"
update="mensagem, @form, tabpanelPrincipal:formListaContato" />
</p:fieldset>
</h:form>
Alguém poderia me ajudar.