Forms 带有空值的JSF表单

Forms 带有空值的JSF表单,forms,jsf,Forms,Jsf,我的观点有一个问题,我无法解决。 我的视图有6个表单,但当我进行主提交时,整个表单有空值,另一个表单中的inputText也有空值,这就是我的视图: <?xml version="1.0" encoding="UTF-8"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"

我的观点有一个问题,我无法解决。 我的视图有6个表单,但当我进行主提交时,整个表单有空值,另一个表单中的inputText也有空值,这就是我的视图:

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui"
  xmlns:pt="http://xmlns.jcp.org/jsf/passthrough">

<h:head>
    <title>Novo Cliente</title>
</h:head>
<h:body>
    <ui:composition template="templateAdmin.xhtml">
        <ui:define name="conteudoAdmin">
            <!-- inicio conteudo de novo cliente -->
            <div class="row mt">
                <div class="col-lg-12">
                    <div class="form-panel">
                        <h4 class="mb"><i class="fa fa-angle-right"></i> Novo Cliente</h4>

                        <h:form class="form-horizontal style-form" id="tipoCliente">
                            <th></th>
                            <h:commandButton  class="btn btn-primary" value="Pessoa Física" action="#{clienteController.pessoaFisica()}" />
                            <p:spacer width="75" height="10" />
                            <h:commandButton  class="btn btn-success" value="Pessoa Jurídica" action="#{clienteController.pessoaJuridica()}" /> 
                            <br></br>
                            <br></br>
                            <br></br>
                        </h:form>

                        <h:form class="form-horizontal style-form" id="buscaCliente" >
                            <!--inicio condicao CPF CNPJ-->
                            <div class="form-group">
                                <h:outputLabel class="col-sm-2 col-sm-2 control-label" value="CPF" for="cpf" rendered="#{clienteController.cliente.tipoPessoa == 0}" />  
                                <h:outputLabel class="col-sm-2 col-sm-2 control-label" value="CNPJ" for="cnpj" rendered="#{clienteController.cliente.tipoPessoa == 1}" />  
                                <div class="col-sm-10">
                                    <p:inputMask mask="999.999.999-99" id="cpf"  
                                                 value="#{clienteController.cliente.identificacao}"  
                                                 rendered="#{clienteController.cliente.tipoPessoa == 0}" 
                                                 /> 


                                    <p:inputMask mask=" 99.999.999/9999-99" id="cnpj"  
                                                 value="#{clienteController.cliente.identificacao}"  
                                                 rendered="#{clienteController.cliente.tipoPessoa == 1}" 
                                                 /> 
                                    <p:spacer width="55" height="10" />
                                    <h:commandButton  id="verifcarCliente" value="Verificar Cliente" 
                                                      actionListener="#{clienteController.buscaClienteCPFCNPJ()}" >

                                    </h:commandButton>
                                </div>
                            </div>
                        </h:form>

                        <h:form class="form-horizontal style-form" id="dadosCliente" rendered="#{clienteController.existeCliente == false}" >
                            <div class="form-group">
                                <h:outputLabel  value="Razão Social" class="col-sm-2 col-sm-2 control-label" />
                                <div class="col-sm-10">
                                    <h:inputText value="#{clienteController.cliente.nomeFantasia}" class="form-control" />
                                </div>
                            </div>

                            <div class="form-group">
                                <h:outputLabel value="Nome" class="col-sm-2 col-sm-2 control-label" />
                                <div class="col-sm-10">
                                    <h:inputText value="#{clienteController.cliente.nome}" class="form-control" />
                                </div>
                            </div>

                            <div class="form-group">
                                <h:outputLabel for="mask" value="Data de Nascimento" class="col-sm-2 col-sm-2 control-label" />
                                <div class="col-sm-10">
                                    <p:inputMask mask="99/99/9999" id="dataNasc"  
                                                 value="#{clienteController.dataNascimento}" /> 

                                </div>
                            </div>

                            <div class="form-group">
                                <h:outputLabel class="col-sm-2 col-sm-2 control-label" value="Telefone" for="tel" />  
                                <div class="col-sm-10">
                                    <p:inputMask mask="(99)9999-9999" id="tel"  
                                                 value="#{clienteController.cliente.telefone}"/> 
                                </div>
                            </div>

                            <div class="form-group">
                                <h:outputLabel  value="E-mail" class="col-sm-2 col-sm-2 control-label" />
                                <div class="col-sm-10">
                                    <h:inputText id="email" value="#{clienteController.cliente.email}" class="form-control" required="true"
                                                 pt:placeholder="ex: email@dominio.com"
                                                 validatorMessage="Endereço de email inválido.">
                                        <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" />
                                    </h:inputText>
                                    <h:message for="email" />
                                </div>
                            </div>

                            <div class="form-group">
                                <h:outputLabel  value="Site" class="col-sm-2 col-sm-2 control-label" />
                                <div class="col-sm-10">
                                    <h:inputText id="site" value="#{clienteController.cliente.site}" class="form-control" 
                                                 validatorMessage="Endereço de site inválido.">
                                        <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_].[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" />
                                    </h:inputText>
                                    <h:message for="site" />
                                </div>
                            </div>
                        </h:form>

                        <h:form class="form-horizontal style-form" id="novoClienteCEP"  rendered="#{clienteController.existeCliente == false}">
                            <div class="form-group">
                                <h:outputLabel class="col-sm-2 col-sm-2 control-label" value="CEP" for="cep" />  
                                <div class="col-sm-10">
                                    <h:inputText  id="cep" value="#{clienteController.cep}" 
                                                  pt:placeholder="Somente Números" maxlength="8" required="true"
                                                  validatorMessage="Digite somente os Números"> 
                                        <f:validateRegex pattern="[0-9]+" />
                                        <f:validateLength minimum="8" maximum="8" />
                                    </h:inputText>
                                    <p:spacer width="55" height="10" />
                                    <h:commandButton  id="Buscar_Dados" value="Buscar Dados" 
                                                      actionListener="#{clienteController.buscarDadosCEP}" >
                                        <f:ajax execute="@form" render="novoClienteCEPDados"/>
                                    </h:commandButton>
                                </div>
                            </div>
                        </h:form>

                        <!--inicio autopreenchimento de endereço-->
                        <h:form class="form-horizontal style-form" id="novoClienteCEPDados" rendered="#{clienteController.existeCliente == false}">
                            <ui:repeat value="#{clienteController.enderecos}" var="dadosEndereco" >

                                <h:column >
                                    <div class="form-group">
                                        <h:outputLabel  value="Logradouro" class="col-sm-2 col-sm-2 control-label" />
                                        <div class="col-sm-10">
                                            <h:inputText value="#{dadosEndereco.tipoEndereco} #{dadosEndereco.logradouro}" 
                                                         class="form-control" disabled="true" />
                                        </div>
                                    </div>

                                    <div class="form-group">
                                        <h:outputLabel  value="Número" class="col-sm-2 col-sm-2 control-label" />
                                        <div class="col-sm-10">
                                            <h:inputText value="#{clienteController.numero}" class="form-control" disabled="false" 
                                                         pt:placeholder="Somente Números" required="true"
                                                         validatorMessage="Digite somente os Números">

                                                <f:validateLength minimum="1" />
                                            </h:inputText>
                                        </div>
                                    </div>

                                    <div class="form-group">
                                        <h:outputLabel  value="Bairro" class="col-sm-2 col-sm-2 control-label" />
                                        <div class="col-sm-10">
                                            <h:inputText value="#{dadosEndereco.bairro}" class="form-control" disabled="true" />
                                        </div>
                                    </div>

                                    <div class="form-group">
                                        <h:outputLabel  value="Cidade" class="col-sm-2 col-sm-2 control-label" />
                                        <div class="col-sm-10">
                                            <h:inputText value="#{dadosEndereco.cidade}" class="form-control" disabled="true" />
                                        </div>
                                    </div>

                                    <div class="form-group">
                                        <h:outputLabel  value="Estado" class="col-sm-2 col-sm-2 control-label" />
                                        <div class="col-sm-10">
                                            <h:inputText value="#{dadosEndereco.UF}" class="form-control" disabled="true" />
                                        </div>
                                    </div>

                                </h:column>
                            </ui:repeat>
                        </h:form>
                        <h:form class="form-horizontal style-form" id="novoClienteSalvar" rendered="#{clienteController.existeCliente == false}">
                            <!--fim auto preenchimeto endereco-->
                            <h:commandButton  id="Salvar" value="Salvar" action="#{clienteController.salvar}" >
                                <f:ajax execute="@all" render="@all"/>
                            </h:commandButton>
                            <p:spacer width="95" height="10" /> 
                            <h:commandButton value="Cancelar" type="reset"/> <p:spacer width="25" height="10"  />
                        </h:form>
                    </div>
                </div>
            </div>
            <!-- fim conteudo de novo cliente -->
        </ui:define>
    </ui:composition>
</h:body>

新客户
新客户






表单DadoClient和此输入文本为空

<div class="form-group">
                                        <h:outputLabel  value="Número" class="col-sm-2 col-sm-2 control-label" />
                                        <div class="col-sm-10">
                                            <h:inputText value="#{clienteController.numero}" class="form-control" disabled="false" 
                                                         pt:placeholder="Somente Números" required="true"
                                                         validatorMessage="Digite somente os Números">
                                                <f:validateLength minimum="1" />
                                            </h:inputText>
                                        </div>
                                    </div>

所有其他的表单都是正确的,如果我嵌套了一些表单,它会工作,但是我读到这不是一件好事。
有人吗???

为什么是6张表格?另外,JSF
UIForm
组件不允许嵌套在另一个
UIForm
组件中,因此
永远不能嵌套,甚至不能嵌套在其他第三方JSF框架/库(如PrimeFaces)上。它违反了
UIForm
组件上的JSF规范。最后,您使用的是JSF1.x还是2.x框架?您运行的是哪个版本的mojarra?它看起来像一个bugHi,我使用的是JSF2.2,这很奇怪,但是当我嵌套一些表单,比如//组件时,如果我这样做,值就不是null,backbean是@viewscope。