Layout, tiles ... O formulario som

3 respostas
V

Boa tarde,

Estou desenvolvendo uma aplicação web, utilizando um layout,
cabeçalho, menu, conteuto.

ate agora a pouco estava tudo ok, consegui fazer o menu funcionar, ajustei todo o layout, e estava aparecendo todo conteudo.

Sò que quando fui em cadastrar usuario ( uma opçao que tem no menu), ele abriu o formulario normalmente, quando preencho todo formulario e clico em cadastrar, que enviar para o metodo apropriado. O formulario some, é como se voltasse pro conteudo inicial.

Esse formulario estava funcionando perfeitamente, cadastrando tudo ok, só que qdo tento utilizador pelo menu, da pau.

será que alguem tem ideia?

3 Respostas

S

Mas ele salva as informações no banco de dados ?

Se salvar pode ser que ele não está encontando uma página que será retornada depois do cadastro.

Poste o erro ai que fica mais fácil ter uma posição.

t+

V

vou colar uma parte que eu fiz, para cadastrar e listar empresas.

primeiro fiz o listaEmpresa.jsp

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<f:loadBundle basename="com.corejsf.messages" var="msgs"/>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
<h:form>
  <t:dataTable id="dataTableEmpresas" value="#{empresaBean.listaEmpresa}" var="empresa" styleClass="orders" headerClass="ordersHeader" rowClasses="evenRow,oddRow">
    <%-- Coluna Nome --%>
    <h:column>
      <f:facet name="header">
        <h:outputText id="headerTextNome" value="#{msgs.nome}"/>
      </f:facet>
      <h:outputText value="#{empresa.nome}"/>
    </h:column>
  </t:dataTable>
</h:form>

Observe que retirei a tag <f:view>, pois essa pagina sera aberta em uma tile.
Quando fui testa-la, funcionou normalmente, mas coloquei a tag <f:view> e acessei essa pagina /listaEmpresa.faces

criarEmpresa.jsp

&lt;%@ taglib uri="http&#58;//java.sun.com/jsf/core" prefix="f"%&gt;
&lt;%@ taglib uri="http&#58;//java.sun.com/jsf/html" prefix="h"%&gt;
&lt;%@ taglib uri="http&#58;//myfaces.apache.org/tomahawk" prefix="t"%&gt;
  &lt;link href="css/style.css" rel="stylesheet" type="text/css"/&gt;
  &lt;h&#58;form&gt;
    &lt;f&#58;loadBundle basename="com.corejsf.messages" var="msgs"/&gt;
    &lt;t&#58;panelGrid columns="2"&gt;
      &lt;%-- Campo Nome Empresa --%&gt;
      &lt;t&#58;outputLabel for="inputNomeEmpresa"&gt;
        &lt;t&#58;outputText value="#&#123;msgs.labelNomeEmpresa&#125;" styleClass="textos"/&gt;
      &lt;/t&#58;outputLabel&gt;
      &lt;t&#58;panelGroup&gt;
        &lt;t&#58;inputText id="inputNomeEmpresa" value="#&#123;empresaBean.empresa.nome&#125;" styleClass="campos" maxlength="100" required="true"&gt;
          &lt;f&#58;validateLength maximum="100"/&gt;
          &lt;f&#58;validateLength minimum="3"/&gt;
        &lt;/t&#58;inputText&gt;
        &lt;t&#58;message for="inputNomeEmpresa" styleClass="msgErro"/&gt;
      &lt;/t&#58;panelGroup&gt;
      &lt;%-- Botao --%&gt;
      &lt;f&#58;verbatim/&gt;
      &lt;t&#58;commandButton value="#&#123;msgs.botaoCadastrarEmpresa&#125;" action="#&#123;empresaBean.criarEmpresa&#125;" styleClass="botaoPonto"/&gt;
    &lt;/t&#58;panelGrid&gt;
  &lt;/h&#58;form&gt;

Obs: testei, com a tag <f:view> e acessei localhost:8080/criarEmpresa.jsp, e funcionou perfeitamente.

menu.jsp

&lt;%@ taglib uri="http&#58;//java.sun.com/jsf/core" prefix="f"%&gt;
&lt;%@ taglib uri="http&#58;//java.sun.com/jsf/html" prefix="h"%&gt;
&lt;%@ taglib uri="http&#58;//myfaces.apache.org/tomahawk" prefix="t"%&gt;
&lt;h&#58;panelGrid columns="1"&gt;
  &lt;h&#58;commandLink&gt;
    &lt;h&#58;outputText value="Listar Usuarios"/&gt;
    &lt;f&#58;param name="menu" value="listarUsuarios"/&gt;
  &lt;/h&#58;commandLink&gt;
  &lt;h&#58;commandLink&gt;
    &lt;h&#58;outputText value="Criar novo usuario"/&gt;
    &lt;f&#58;param name="menu" value="criarUsuario"/&gt;
  &lt;/h&#58;commandLink&gt;
    &lt;h&#58;commandLink&gt;
    &lt;h&#58;outputText value="Listar Empresas"/&gt;
    &lt;f&#58;param name="menu" value="listaEmpresa"/&gt;
  &lt;/h&#58;commandLink&gt;
      &lt;h&#58;commandLink&gt;
    &lt;h&#58;outputText value="Criar nova Empresa"/&gt;
    &lt;f&#58;param name="menu" value="criarEmpresa"/&gt;
  &lt;/h&#58;commandLink&gt;
&lt;/h&#58;panelGrid&gt;

obs: o menu está acessando normalmente, quando clico em Criar nova Empresa, aparece a pagina no local certo.

tile-defs.xml

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http&#58;//jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd"&gt;
&lt;tiles-definitions&gt;
  &lt;definition name="administracao" path="/layout.jsp"&gt;
    &lt;put name="header" value="/header.jsp"/&gt;
    &lt;put name="menu" value="/menu.jsp"/&gt;
    &lt;put name="conteudo" value="/conteudo.jsp"/&gt;
  &lt;/definition&gt;
&lt;/tiles-definitions&gt;

conteudo.jsp

&lt;%@taglib uri="http&#58;//java.sun.com/jsp/jstl/core" prefix="c"%&gt;
&lt;c&#58;import url="$&#123;param.menu&#125;.jsp"/&gt;

CONTINUANDO:
Quando acesso atravez do menu “Criar Empresa”, o formulario abre. Então preecho o formulario e clico em cadastrar empresa.
ENTÃO… tudo que está aparecendo em conteudo some.
Se eu colocar algum texto no input, então cadastra na base. Como o campo input está com required=true, se eu não colocasse nada,
deveria informar o erro (assim como aparece quando acesso o criar empresa diretamente), só que o conteudo some também.

E é isso meu problema, disculpa ae se escrevi mto, mas axo que eu não estava conseguindo descrever o problema corretamente

aguardo resposta

S

Pensei que vc estava utilizando Struts.
No jsf nunca usei o Tiles.

Criado 24 de janeiro de 2007
Ultima resposta 26 de jan. de 2007
Respostas 3
Participantes 2