JSF - formulário não envia

pessoal to com o seguinte problema:

tenho uma página cadastraUser.xhtml rodando perfeito o formulário com campos requeridos…etc…

quando rodo essa página funciona tudo perfeito…

acontece que estou usando uma única página principal que faço o include das outras páginas…
só que depois que eu faço o include, a página cadastraUser.xhtml dentro da pricipal quando envio os formularios ela não valida os campos com required=“true” e os campos preenchidos ela limpa todos…deixa tudo em branco…

fora do include é funcionamento perfeito…mas dentro da principal não funfa…

alguém ja passou por algo parecido…
valeu a todos…

só uma pergunta

se você tá usando facelets, pra que utilizar os includes?

[quote=Leozin]só uma pergunta

se você tá usando facelets, pra que utilizar os includes?[/quote]

sim estou usando facelets, na verdade é a primeira vez que trabalho com facelets, caso esteja errado me dê sugestão por favor…

mas estou usando include pois tem uma área ajax, um panel ajax que dentro dele eu faço o include assim: <a4j:include viewId="#{meuBean.url}"/>

e ai a cada clique no menu esquerdo eu seto o bean pra nova opção e ela recarrega só o panel, navego tudo dentro de uma única página… as páginas incluídas funcionam fora normal, mas depois que são inseridas na principal…o formulário não valida…não envia…se eu preencher os campos eles limpam ao enviar…

agradeço ajuda…

esse teu include está dentro de um form?

se estiver, você tem que tirar, porque provavelmente os teus includes já possuem um form (certo?)

[quote=Leozin]esse teu include está dentro de um form?

se estiver, você tem que tirar, porque provavelmente os teus includes já possuem um form (certo?)[/quote]

na verdade não…estou em um form apenas…

agora olhando com mais detelhes e fazendo testes…

meu include está dentro de um:

<a4j:outputPanel ajaxRendered="true"> <a4j:include viewId="meuBean.url"/> </a4j:outputPanel>

quando eu tiro o include de dentro do outputPanel, ele não atualiza sozinho via ajax, ele muda o bean ao clicar no menu esquerdo, e se eu der F5 ele recarrega com o novo valor do bean, e os formulários funcionam normal como devem…

agora percebi que dentro do outputPanel é que tá ocorrendo o problema, porém e nesse panel que o ajax faz o rendered e recarrega sozinho sem dar refresh em tudo…

[quote=Javabuntu][quote=Leozin]esse teu include está dentro de um form?

se estiver, você tem que tirar, porque provavelmente os teus includes já possuem um form (certo?)[/quote]

na verdade não…estou em um form apenas…

agora olhando com mais detelhes e fazendo testes…

meu include está dentro de um:

<a4j:outputPanel ajaxRendered="true"> <a4j:include viewId="meuBean.url"/> </a4j:outputPanel>

quando eu tiro o include de dentro do outputPanel, ele não atualiza sozinho via ajax, ele muda o bean ao clicar no menu esquerdo, e se eu der F5 ele recarrega com o novo valor do bean, e os formulários funcionam normal como devem…

agora percebi que dentro do outputPanel é que tá ocorrendo o problema, porém e nesse panel que o ajax faz o rendered e recarrega sozinho sem dar refresh em tudo…
[/quote]

quando vc está utilizando um a4j:include o botão que submete a página tem que ser um a4j:commandButton (ou a4j:commandLink) aí funciona certinho.

estou usando este pra enviar o formulário:

 <a4j:commandButton style="margin-left: 40%; font-size:12px;" value="Cadastrar" action="#{Bean.data}" type="submit"/>

[quote=Javabuntu][quote=Leozin]esse teu include está dentro de um form?

se estiver, você tem que tirar, porque provavelmente os teus includes já possuem um form (certo?)[/quote]

na verdade não…estou em um form apenas…
[/quote]

Não faça isso, na real nunca faça isso porque o que pode acontecer é que você pode estar enviando dados que não serão utilizados no servidor, ou seja, está fazendo um super get/post, além de aumentar o tráfego na rede

minha sugestão: todo e qualquer include que você fizer deve ter o seu próprio form

o form pode não estar sendo submetido porque ele pode estar tentando validar um campo ;~

aparece algo no teu h:messages?

antes de mais nada obrigado pela atenção e disposição em ajudar…
não entendi uma coisa, quer dizer fiquei confuso :roll:
vc disse primeiro:

[quote=Leozin]esse teu include está dentro de um form?

se estiver, você tem que tirar, porque provavelmente os teus includes já possuem um form (certo?)[/quote]

na verdade não…estou em um form apenas…
[/quote]
depois

[quote]minha sugestão: todo e qualquer include que você fizer deve ter o seu próprio form

o form pode não estar sendo submetido porque ele pode estar tentando validar um campo ;~

aparece algo no teu h:messages?[/quote]
vc disse pra tirar do form, depois disse que eh melhor estar no form…

quanto as testes é o seguinte:
minha página incluida estava dentro de um form, e na principal o include estava dentro de outro form, tinha 2 como vc perguntou…

tirei o form da pagina incluida deixando so no include assim:

 <a4j:outputPanel ajaxRendered="true">
                      <a4j:form>
                                <a4j:include viewId="#{Bean.url}" id="centro"/>
                        </a4j:form>
    </a4j:outputPanel>

depois testei assim:

 <a4j:outputPanel ajaxRendered="true">
                            <h:form>
                                <a4j:include viewId="#{Bean.url}" id="centro"/>
                        </h:form>
    </a4j:outputPanel>

não funcionou, quer dizer ele está assim o formulário, se eu preencher e enviar ele limpa os campos, se os campos tiver vazio ele não valide e o message não aparece nada…
esse #{Bean.url} pode ser por exemplo, CadastraUser.xhtml, se eu abrir ela direto, ela valida, envia e tudo mais, mas dentro do include não funciona…

se eu tirar o <a4j:outputPanel ajaxRendered=“true”> o menu não faz o ajax esperado, ou seja, nem abre é aqui que ele eh renderizado, agora em outro caso, vi que uma página desconfigurou algumas imagens ao inserir dentro do <a4j:outputPanel ajaxRendered=“true”>…vou pesquisar, acho que é alguma tag dentro deste panel que não pode ter…sei lá…pois ele está comportanto de maneira inesperada…

eu disse pra tirar do form porque eu tinha suposto que você já havia um e por isso que tava dando problema…

então deixa eu ver se entendi: você tem o teu form (com os botões e funções ajax dentro da página que vem do include) e, os mesmos não estão sendo validados? digamos, se vc envia o formulario com os campos vazios (os que possuem required=“true”) o form não é enviado mas, se vc preencher os campos ele é enviado?

[quote=Leozin]

então deixa eu ver se entendi: você tem o teu form (com os botões e funções ajax dentro da página que vem do include) e, os mesmos não estão sendo validados? digamos, se vc envia o formulario com os campos vazios (os que possuem required=“true”) o form não é enviado mas, se vc preencher os campos ele é enviado?[/quote]

fora do include, abrindo a pagina direto funciona normal…blz…

sim dentro do include(a mesma pagina que fora funciona normal) não valida, e se preencher não envia, ele “reseta” os campos, limpa tudo que preencheu…

cara, fica muito complicado pra tu postar o código pra gente ver?

assim, mostra uma página simples que o formulário não envia

outra coisa: você já testou essa página que o form não envia, mas sozinha? sem ser por include?
o erro continua?

essa eh umas das páginas que pode ser incluída…rodando sozinha ela roda normal…funciona tudo.
CadastraUser.xhtml

[code]


:.Virtual Project.:

</head>
                 <rich:tabPanel switchType="client">
                     <rich:tab id="tabGrupo1" label="Cadastrar Grupo" style="max-right:450px;widht:450px;"> 
               
                             <h:outputLabel value="Codigo: "  style="margin-left: 2%;font-size:12px;"/>
                             <h:inputText id="codigoGrupo"  style="margin-left:3.5%; width :80px; " disable="true"/> 
                             <rich:message  for="codigoGrupo" style="margin-left: 16%;font-size:12px;font-color:red;"/>
                             <br/>
                             <br/>
                             <h:outputLabel value="Nome: " style="margin-left:2%; font-size:12px;"/>
                             <h:inputText id="nomeGrupo" style="margin-left:4.8%; width : 240px;" required="true" value=""/> 
                             		<br/> 			  
                             <rich:message  for="nomeGrupo" style="margin-left: 16%;font-size:12px;font-color:red;"/>
                             <br/>
                             <a4j:commandButton id="cadastraGrupo" style="margin-left: 40%; font-size:12px;" value="Salvar" action="#{Bean.data}"/>
                             <br/>
            
                          <br/>
                       
                             <rich:panel id="panelGrupo" header="Cadastrar Componentes" style="max-right:450px;widht:450px;">
                                 <br/>
                                 <h:outputLabel value="Selecionar Componente: " style="margin-left: 2%;font-size:12px;"/>
                                 <h:selectOneMenu id="compoeGrupo" value="usuarios">
                                     <f:selectItems value="#{Bean.perfis}"/>
                                 </h:selectOneMenu> 
                                  <br/>  <br/>
                                 <a4j:commandButton id="inicluiUser" style="margin-left: 40%; font-size:12px;" value="Remover" action="#{Bean.data}"/>   
                                    <br/>
                             </rich:panel>
          
                         <br/>
                     </rich:tab>
                     <rich:tab id="tabGrupo2" label="Componentes do Grupo" style="max-right:450px;widht:450px;">
                               <rich:dataTable width="420px;" id="pessoasList" rows="10" value="#{Bean.listaGrupo}" var="pessoa">
                                 <f:facet name="header">
                                     <rich:columnGroup>
                                         <rich:column colspan="2">
                                             <h:outputText value="Componentes do Grupo" />
                                         </rich:column>  
                                         <rich:columnGroup> 
                                             <rich:column  width="270px">
                                                 <h:outputText value="Nome" />
                                             </rich:column>
                                             <rich:column width="50px;">
                                                 <h:outputText style="align:center;" value="Remover" />
                                             </rich:column>
                                         </rich:columnGroup>    
                                     </rich:columnGroup>
                                 </f:facet>
                                 <rich:column>
                                     <h:outputText value="#{pessoa.nome}"/>
                                 </rich:column>
                                 <rich:column>
                                     <h:selectBooleanCheckbox  immediate="true"  /> 
                                 </rich:column>
                             </rich:dataTable>
                             <br/>
                             <a4j:commandButton id="removeUser" style="margin-left: 58%; font-size:12px;" value="Remover"/>   
                      
                    </rich:tab> 
                 </rich:tabPanel>         
[/code]

essa eh a página que recebe os includes: Principal.xhtml

[code]<?xml version="1.0" encoding="ISO-8859-1"?>

<ui:composition template="/templateIni.xhtml"> 
    
             <ui:define name="banner">
		              <div style="background-image:url(images/LogoIni.jpg); background-repeat:no-repeat; height: 120px; margin-top: 0px; margin-bottom: 0px;"/>
             </ui:define>
              <ui:define name="menuesq">
                  <h:form>
                    <a4j:include id="menuEsq" viewId="/MenuIniEsq.xhtml"/>
                    </h:form>
              </ui:define>
              <ui:define name="menudir">
                    <h:form>
			<a4j:include id="menuDir" viewId="/MenuIniDir.xhtml"/>
                    </h:form>
              </ui:define>
                <ui:define name="conteudo">
                    
                      <a4j:outputPanel ajaxRendered="true">
                            <h:form>
                                    <a4j:include viewId="#{Bean.url}" id="centro"/>
                            </h:form>
                      </a4j:outputPanel>
                   
           </ui:define>
               
             <ui:define name="rodape">
                 <div style="background-image:url(images/LogoDown.jpg); background-repeat:no-repeat; height: 120px; margin-top: 0px; margin-bottom: 0px;"/>
             </ui:define>  
          
</ui:composition>
[/code]

nessa principal acima, não roda a CadastraUser.xhtml dentro, ela aparece certinho, mas com os problemas ditos anteriormente…

agora se na principal eu trocar isso:

<ui:define name="conteudo"> <a4j:outputPanel ajaxRendered="true"> <h:form> <a4j:include viewId="#{Bean.url}" id="centro"/> </h:form> </a4j:outputPanel> </ui:define>

por isso:

<ui:define name="conteudo"> <h:form> <a4j:include viewId="#{Bean.url}" id="centro"/> </h:form> </ui:define>

ai o include funciona com o valor inicial de Bean.url (inicial = /CadastraUser.xhtml)… só que tirando a tag <a4j:outputPanel ajaxRendered=“true”> o local não mais renderizado…tirando esta tag o include funciona E valida, funciona tudo perfeito, só que quando eu clico no menu, ele ALTERA o bean, por exemplo para /CadastraGrupo.xhtml mas só que nao aparece no centro devido a tag responsável por fazer o refresh no centro é essa <a4j:outputPanel ajaxRendered=“true”>

por isso vejo que o problema deve ser com esta tag <a4j:outputPanel ajaxRendered=“true”>:
1- se eu tirar ela, funciona SÓ o primeiro inclue, com valor inicial do Bean.url, mas o menu esquerdo não consegue mais renderizar o centro por falta da tag.
2- se eu deixar, o menu funciona e altera todas as paginas, mas nenhuma delas valida, envia, não funcionam simplesmente…

Javabuntu
Você conseguiu resolver este problema?
Eu queria fazer isto que você fez:

Você pode me ajudar? Atualmente estou redirecionando para outra página quando o usuário clica numa opção do menu…