oi pessoal
queria ajuda de vcs, eu estou aprendendo JSF e estou seguindo um manual q encontrei na internet mesmo. Só que estou tendo problema de direcionar as paginas no faces-config.xml.
Olha como ele está:
[code]<?xml version="1.0" encoding="windows-1252"?>
gerenciadorContato
agenda.GerenciadorContato
session
<navigation-rule>
<from-view-id>/incluir.jsp</from-view-id>
<navigation-case>
<from-outcome>sucesso</from-outcome>
<to-view-id>/sucesso.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>erro</from-outcome>
<to-view-id>/erro.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<from-outcome>incluir</from-outcome>
<to-view-id>/incluir.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>consultar</from-outcome>
<to-view-id>/consultar.jsp</to-view-id>
</navigation-case>
</navigation-rule>
[/code]
porém se eu estou na tela de inclusão , clico no botão incluir e devolve uma string “sucesso”…só que não entra na sucesso.jsp
olha minha classe:
[code]package agenda ;
import java.util.ArrayList ;
import java.util.Date ;
import java.util.List ;
import javax.faces.event.ActionEvent ;
import javax.faces.model.DataModel ;
import javax.faces.model.ListDataModel ;
import org.apache.myfaces.custom.navmenu.NavigationMenuItem ;
public class GerenciadorContato
{
private Contato contato = new Contato();
private DataModel contatos;
private String tituloTela;
public void consultar(ActionEvent e)
{
tituloTela = "Contatos da Agenda";
ContatoDao cDao = new ContatoDao();
contatos = new ListDataModel(cDao.consultar());
}
public String incluir(ActionEvent e)
{
ContatoDao cDao = new ContatoDao();
cDao.incluir(contato);
return "sucesso";
}
// get e set omitidos
}
[/code]
minha jsp de incluir:
[code]
<%@ page contentType=“text/html;charset=windows-1252”%>
<%@ 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”%>
incluir
<%@include file="menu.jsp"%>
Inclusão de Contatos:
<fieldset>
<legend>Dados Incluidos:</legend>
<h:panelGrid columns="2">
<h:outputText value="Nome:"/>
<h:outputLabel value="#{gerenciadorContato.contato.nome}"/>
<h:outputText value="Telefone:"/>
<h:outputLabel value="#{gerenciadorContato.contato.telefone}"/>
<h:outputText value="Favorito:"/>
<h:outputLabel value="#{gerenciadorContato.contato.favorito}"/>
</h:panelGrid>
</fieldset>
</h:form>
</f:view>
</div>
<div id="rightBar"> </div>
<div id="footer"> <img src="images/barra.jpg"/> </div>
</div>
[/code]
se alguem já pssou por isso e puder me ajudar, agradeço
só preciso direcionar para sucesso.jsp ou erro.jsp
vlw
sucesso.jsp esta no seu web-content?
o incluir.jsp nesse caso deve estar la tambem
os dois estão no mesmo nivel, dentro de web-content
e se fosse erro de não encontrar a classe, não deveria dar o erro 404?
porque não da erro, ele persiste e volta pra mesma tela…
Tenta tirar o “ActionEvent e” do metodo incluir que
requer retorno void e troque de “actionListener” para “action” no botao
Jean
mas o problema não eh a ação, eu consigo entrar no método…ele chega a incluir normal
só não chega vai para outra tela. Eu axo q esse erro está no faces-config. Mas não to achando o erro
No h:commandButton, troque o
actionListener="#{gerenciadorContato.incluir}“
por action=”#{gerenciadorContato.incluir}",
pois o actionListener não é usada para navegação.
Retire os parametros do método incluir e o retorno deve ser String.
[]s
valeu bruno
era isso mesmo, agora deu certo
brigado
Voce fez a alteracao e o erro persistiu?
Eu testei o seu exemplo e funciou direitinho.
Nao ha como fazer a navegacao utilizando actionListener pois
o metodo exige void como retorno, colocando retorno String,
action no botao e removendo o ActionEvent vai fazer o que voce
deseja. Nesse caso nao vejo pq usar actionListener.
Jean deu certo sim…mudei para action e resolveu o problema…
agora tem outro problema, estou usando o tomahawk e o myfaces para o exemplo acima, e qdo clico no menu (q foi gerado pelo jsf) ele da erro…como se tivesse faltando algo do tomahawk
olha o erro que aparece no browser
Erro: dummyForm.elements.jscook_action is undefined
Arquivo-fonte: http://172.16.22.119:8989/testejsf/faces/myFacesExtensionResource/org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader/12436229/navmenu.jscookmenu.HtmlJSCookMenuRenderer/MyFacesHack.js;jsessionid=ac101677231dd3b6e9c0ab0d4a69adb4b4952484bb51
Linha: 33
olha minha tela de menu:
[code]<%@ page contentType=“text/html;charset=windows-1252”%>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>
<%@ taglib uri=“http://myfaces.apache.org/tomahawk” prefix=“t”%>
<h:panelGrid width=“500px” style=“backgroundcolor: #cfc”>
<t:jscookMenu layout=“hbr” theme=“ThemePanel”>
<t:navigationMenuItem itemLabel=“Cadastro”>
<t:navigationMenuItem itemLabel=“Incluir Contato” action=“incluir”></t:navigationMenuItem>
</t:navigationMenuItem>
<t:navigationMenuItem itemLabel=“Consultar”>
<t:navigationMenuItem itemLabel=“Consultar Todos” action=“consultar”></t:navigationMenuItem>
<t:navigationMenuItem itemLabel=“Consultar Aniversáriantes de Hoje” action=“consultar”></t:navigationMenuItem>
</t:navigationMenuItem>
<t:navigationMenuItem itemLabel=“Favoritos”>
</t:navigationMenuItem>
</t:jscookMenu>
</h:panelGrid>
[/code]
esse menu.jsp eh um include da tela incluir que já foi postada…
eu consigo acessar normalmente a tela incluir, mas se clico no menu…da esse erro ai
preciso de ajuda :?
Crie um form e coloque o menu dentro junto com esse campo:
No wiki do menu diz que deve haver esse campo.
http://wiki.apache.org/myfaces/JSCook_Menu
Obs: No google tem bastante coisa sobre o assunto.
Jean, não deu certo não
coloquei esse campo hidden e não funcionou
não coloquei o form no menu.jsp porque ele eh include
e na tela que eu incluo, já existe o form.
repara la na tela incluir.jsp que eu faço include do menu.jsp (e está dentro do form).
Agora só adicionei o campo hidden no menu.jsp. Mas continua o mesmo erro
pelo que eu estou entendendo, o erro pode ser um filtro declarado no web.xml:
<filter>
<filter-name>extensionsFilter</filter-name>
<filter-class>org.apache.myfaces.component.html.util.ExtensionsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>*.faces</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>extensionsFilter</filter-name>
<url-pattern>/faces/*</url-pattern>
</filter-mapping>
isso foi declarado no inicio do meu web.xml, atnes do mapeamento do myfaces
será q pode ser isso?
Olha só
tirei o menu da jsp separada (que eu tava fazendo include) e coloquei no incluir.jsp, dai deu certo
porque?
jsf não permite fazer include?