1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

JSF/Primefaces ignorando campos required após atualização com ajax

Bom dia galera estou com o seguinte problema tenho uma tela de cadastro de clientes onde ele poderá ser uma pessoa fisica ou juridica, para isso eu criei um selectOneRadio para inverter entre os campos que aparecem, outra coisa dessa tela é que tenho uma especialização onde Pessoa é classe mãe e pessoaJuridica e pessoaFisica são filhas dela então eu uso essas especializações para preencher os campos que especificos de cada um, não sei se pode influenciar isso. Na primeira vez que executo o botão salvar ele valida normalmente, se eu mudo a opção no radio ele simplesmente passa direto.

Quanto ao jars do sistema, uso JSF 2.1 Majorra, Primefaces 5.0 (estou com duvida se pode ser isso, testei com a ultima versão do 4.0 também tive o mesmo erro).

Segue o XHTML

<h:form id="cadastro">
            <p:messages id="messages" showDetail="true" shautoUpdate="true"
                closable="true" showSummary="false" />
            <p:focus context="panel" />
            <p:panel columns="2" id="panel" header="${msg.cliente_header}">
                <h:panelGrid id="panelGrid">
                    <p:outputLabel for="tipoPessoa" value="${msg.pessoa_campo_tipo}" />
                    <p:selectOneRadio id="tipoPessoa" value="#{pessoaBean.tipoPessoa}">
                        <f:selectItem itemLabel="${msg.pessoa_tipo_fisica}" itemValue="PF" />
                        <f:selectItem itemLabel="${msg.pessoa_tipo_juridica}"
                            itemValue="PJ" />
                        <p:ajax event="change" process="@this"
                            update="panelGrid" />
                    </p:selectOneRadio>

                    <h:panelGrid id="panelGridFisica"
                        rendered="#{pessoaBean.tipoPessoa eq 'PF'}">
                        <p:outputLabel value="${msg.pessoa_campo_pesNome}" for="nome" />
                        <p:inputText id="nome" label="${msg.pessoa_campo_pesNome}"
                            placeholder="${msg.pessoa_campo_pesNome}"
                            value="#{pessoaBean.fisica.pesNome}" size="30" maxlength="45"
                            required="true" requiredMessage="${msg.erro_required_nome}">
                        </p:inputText>

                        <p:outputLabel value="${msg.pessoa_campo_pesCpf}" for="cpf" />
                        <p:inputMask id="cpf" value="#{pessoaBean.fisica.pesCpf}"
                            required="true" label="${msg.pessoa_campo_pesCpf}"
                            mask="999.999.999-99" placeholder="${msg.pessoa_campo_pesCpf}"
                            requiredMessage="${msg.erro_required_cpf}" />
                    </h:panelGrid>

                    <h:panelGrid id="panelGridJuridica"
                        rendered="#{pessoaBean.tipoPessoa eq 'PJ'}">

                        <p:outputLabel value="${msg.pessoa_campo_pesRazaoSocial}"
                            for="razaoSocial" />
                        <p:inputText id="razaoSocial"
                            label="${msg.pessoa_campo_pesRazaoSocial}"
                            placeholder="${msg.pessoa_campo_pesRazaoSocial}"
                            value="#{pessoaBean.juridica.pesRazaoSocial}" size="30"
                            maxlength="45" required="true"
                            requiredMessage="${msg.erro_required_razaoSocial}">
                        </p:inputText>

                        <p:outputLabel value="${msg.pessoa_campo_pesNomeFantasia}"
                            for="pesNomeFantasia" />
                        <p:inputText id="pesNomeFantasia"
                            label="${msg.pessoa_campo_pesNomeFantasia}"
                            placeholder="${msg.pessoa_campo_pesNomeFantasia}"
                            value="#{pessoaBean.juridica.pesNomeFantasia}" size="30"
                            maxlength="45" required="true"
                            requiredMessage="${msg.erro_required_nomeFantasia}">
                        </p:inputText>

                        <p:outputLabel value="${msg.pessoa_campo_pesCnpj}" for="pesCnpj" />
                        <p:inputMask id="pesCnpj" label="${msg.pessoa_campo_pesCnpj}"
                            placeholder="${msg.pessoa_campo_pesCnpj}"
                            mask="99.999.999/9999-99" value="#{pessoaBean.juridica.pesCnpj}"
                            required="true" requiredMessage="${msg.erro_required_cnpj}">
                        </p:inputMask>

                        <p:outputLabel value="${msg.pessoa_campo_pesIE}" for="pesIE" />
                        <p:inputText id="pesIE" label="${msg.pessoa_campo_pesIE}"
                            placeholder="${msg.pessoa_campo_pesIE}"
                            value="#{pessoaBean.juridica.pesIE}" maxlength="14">
                        </p:inputText>
                    </h:panelGrid>

                    <h:column>
                        <p:outputLabel value="${msg.pessoa_campo_pesEndCidade}"
                            for="pesEndCidade" />
                        <p:spacer width="90" height="0" />
                        <p:outputLabel value="${msg.pessoa_campo_pesEndCep}"
                            for="pesEndCep" />
                    </h:column>

                    <h:column>
                        <p:inputText id="pesEndCidade"
                            placeholder="${msg.pessoa_campo_pesEndCidade}"
                            value="#{pessoaBean.pessoa.pesEndCidade}" maxlength="50" />
                        <p:spacer width="6" height="0" />
                        <p:inputMask mask="99999-999"
                            placeholder="${msg.pessoa_campo_pesEndCep}" id="pesEndCep"
                            value="#{pessoaBean.pessoa.pesEndCep}"
                            onkeypress="return SomenteNumero(event)" />
                    </h:column>

                    <p:outputLabel value="${msg.pessoa_campo_pesEndBairro}"
                        for="pesEndBairro" />
                    <p:inputText id="pesEndBairro" maxlength="50" size="50"
                        placeholder="${msg.pessoa_campo_pesEndBairro}"
                        value="#{pessoaBean.pessoa.pesEndBairro}" />

                    <h:column>
                        <p:outputLabel value="${msg.pessoa_campo_pesEndRua}"
                            for="pesEndRua" />
                        <p:spacer width="255" height="0" />
                        <p:outputLabel value="${msg.pessoa_campo_pesEndNumero}"
                            for="pesEndNumero" />
                    </h:column>

                    <h:column>
                        <p:inputText id="pesEndRua"
                            placeholder="${msg.pessoa_campo_pesEndRua}" size="50"
                            value="#{pessoaBean.pessoa.pesEndRua}" maxlength="50" />
                        <p:spacer height="0" width="5" />
                        <p:inputText id="pesEndNumero" size="10" maxlength="5"
                            placeholder="${msg.pessoa_campo_pesEndNumero}"
                            value="#{pessoaBean.pessoa.pesEndNumero}"
                            onkeypress="return SomenteNumero(event)" />
                    </h:column>

                </h:panelGrid>
                <p:commandButton actionListener="#{pessoaBean.salvar}"
                    ajax="false" value="${msg.global_salvar}" >
                    <f:setPropertyActionListener target="#{pessoaBean.pessoa.pesTipo}"
                        value="#{pessoaBean.CLIENTE}" />
                </p:commandButton>
                <p:spacer width="5" />
                <p:commandButton actionListener="#{pessoaBean.inicializar}"
                    value="${msg.global_inicializar}" process="@this" update="panel" />
            </p:panel>
        </h:form>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jsf primefaces java-ee xhtml ou faça a sua própria pergunta.