JSF - não executa <navigation-rule> do faces-config.xml

0 respostas
W

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 do arquivo faces-config.xml, porém funciona normalmente o que está nas tags .
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
[color=red][/color] (deve ir para listarcursos.jsp)
[color=red][/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 , porém as tags 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

<?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>

web.xml

<?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>

curso.jsp Ao clicar nos links, deveria chamar as páginas configuradas no faces-config.xml, mas não acontece nada.

<%@ 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>

incluircurso.jsp Ao incluir com sucesso, deveria chamar a página listarcursos.jsp e se houver um erro deveria ir para a pág. erro.jsp

<%@ 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>

Curso.java Possui os retornos "sucesso" ou "falha" para serem usados no

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";
		}
	}
}
Criado 23 de julho de 2008
Respostas 0
Participantes 1