Pessoal, estou aprendendo JSF e tudo ia bem até eu chegar na parte de regras de navegação. Parece que não está sendo executado as tags <navigation-rule> do arquivo faces-config.xml, porém funciona normalmente o que está nas tags <managed-bean>.
Acontece o seguinte:
Tenho a pág. curso.jsp com 2 links onde cada um deve redirecionar para a pág. respectiva de acordo com a configuração das tags <navigation-rule>
[color=red]<h:commandLink value=“Listar” action=“listar”/>[/color] (deve ir para listarcursos.jsp)
[color=red]<h:commandLink value=“Incluir” action=“incluir”/>[/color] (deve ir para incluircurso.jsp)
digito o endereço [color=red]http://localhost:8080/.../curso.jsf[/color] e entra na pág. normalmente, mas ao clicar no link é carregada a própria página e não a definida no faces-config.xml.
Tenho uma outra página, incluircurso.jsp que é carregada normalmente e pela regra, se em uma inclusão ocorrer falha, deveria redirecionar para a pág. erro.jsp e se incluir com sucesso deveria ir para listarcursos.jsp. Mas isso não ocorre, parece que não entra nas tags <navigation-rule>, porém as tags <managed-bean> são executadas normalmente.
Agradeço desde já e espero que possam me ajudar a descobrir o que acontece, já olhei aqui no fórum, na documentação oficial, mas aparentemente está tudo certo.
Abaixo colocarei os códigos completos para que possam dar uma olhada.
Estou usando jsf-1_1_01
Obrigado.
faces-config.xml
[code]<?xml version=“1.0” encoding=“UTF-8”?>
<!DOCTYPE faces-config PUBLIC
“-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN”
“http://java.sun.com/dtd/web-facesconfig_1_1.dtd”>
<faces-config>
<managed-bean>
<description>
</description>
<managed-bean-name>alunos</managed-bean-name>
<managed-bean-class>br.com.aplicacaoweb.classes.Alunos</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<description>
</description>
<managed-bean-name>AdminCursosDAO</managed-bean-name>
<managed-bean-class>br.com.aplicacaoweb.dao.AdminCursosDAO</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<description>
</description>
<managed-bean-name>curso</managed-bean-name>
<managed-bean-class>br.com.aplicacaoweb.classes.Curso</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/curso.jsp</from-view-id>
<navigation-case>
[color=red]<from-outcome>incluir</from-outcome>[/color]
<to-view-id>/incluircurso.jsp</to-view-id>
</navigation-case>
<navigation-case>
[color=red]<from-outcome>listar</from-outcome>[/color]
<to-view-id>/listarcursos.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/incluircurso.jsp</from-view-id>
<navigation-case>
[color=red]<from-outcome>sucesso</from-outcome>[/color]
<to-view-id>/listarcursos.jsp</to-view-id>
</navigation-case>
<navigation-case>
[color=red]<from-outcome>falha</from-outcome>[/color]
<to-view-id>/erro.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>[/code]
web.xml
[code]<?xml version=“1.0” encoding=“ISO-8859-1”?>
<!DOCTYPE web-app PUBLIC
“-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
“http://java.sun.com/dtd/web-app_2_3.dtd”>
<web-app>
<display-name>Struts Blank Application</display-name>
<!-- Configuracao para JSF -->
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Standard Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>[/code]
curso.jsp Ao clicar nos links, deveria chamar as páginas configuradas no faces-config.xml, mas não acontece nada.
[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=ISO-8859-1”>
<title>Insert title here</title>
</head>
<body>
<div align=“center”>
<f:view>
<h:form>
<table border=“0”>
<tr>
<td align=“center”>
Cadastro de Cursos
</td>
</tr>
<tr>
<td align=“center”>
<h:commandLink value=“Listar” action=“listar”/>
</td>
</tr>
<tr>
<td align=“center”>
<h:commandLink value=“Incluir” action=“incluir”/>
</td>
</tr>
</table>
</h:form>
</f:view>
</div>
</body>
</html>[/code]
incluircurso.jsp Ao incluir com sucesso, deveria chamar a página listarcursos.jsp
[code]<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h”%>
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=ISO-8859-1”>
<title>Inclusão de curso</title>
</head>
<body>
<f:view>
<h:form>
<center><h2>Incluir novo curso</h2></center>
<table align=“center”>
<tr>
<td>IdCurso:</td>
<td><h:inputText value="#{curso.idCurso}"></h:inputText>
</tr>
<tr>
<td>Curso:</td>
<td><h:inputText value="#{curso.curso}"></h:inputText>
</tr>
<tr>
<td colspan=“2” align=“center”>
<h:commandButton value=“Incluir” action="#{curso.incluir}"></h:commandButton>
</td>
</tr>
<tr>
<td colspan=“2”>
<h:outputText id=“resultado” value="#{curso.status}"></h:outputText>
</td>
</tr>
</table>
</h:form>
</f:view>
</body>
</html>[/code]
Curso.java Possui os retornos “sucesso” ou “falha” para serem usados no <navigation-rule>
[code]public class Curso {
private int idCurso = 0;
private String curso = "";
private String status = "";
public int getIdCurso() {
return idCurso;
}
public void setIdCurso(int idCurso) {
this.idCurso = idCurso;
}
public String getCurso() {
return curso;
}
public void setCurso(String curso) {
this.curso = curso;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String incluir() throws SQLException{
Connection cn = ConnectionFactory.getConnection();
PreparedStatement pst = null;
try{
pst = cn.prepareStatement("insert into cursos (idCurso, curso) values(?,?)");
pst.setInt(1, idCurso);
pst.setString(2, curso);
pst.executeUpdate();
status = curso + " Incluído com sucesso!!!";
return "sucesso";
}catch(SQLException e){
status = "Falha na inclusão: " + e.getMessage();
return "falha";
}
}
}[/code]