Erro 404 jsf

3 respostas
VandersonAssis

Bom dia pessoal. Alguém pode me ajudar com o seguinte problema?

Sempre que clico em um commandLink em uma página jsf que está dentro do folder WEB-INF, ele não carrega o método do managed bean :frowning:
E não é problema de configuração ou retorno do método, porque quando a página JSF está fora do folder WEB-INF ele carrega normalmente.

Eu fiz o seguinte teste, tirei a página que não está carregando o método de dentro do WEB-INF e coloquei no WebContent e ele carregou o método normalmente. Segue o código do JSF que não carrega o método e do managed bean. Desde já agradeço por qualquer ajuda!

Ultima coisinha. Depois de muito pesquisar na internet ví que muitas pessoas, usam a tag messages para mostrar erros. Essa tag também mostra erros de configuração, ou só de campos preenchidos incorretamente? Alguém pode me ensinar como usa-la por favor.

OBS: Para quem não sabe estou usando o JSF 2.0. Portanto não tenho o xml face-config.

Obrigado!!

Pagina JSF:

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<html>
	<head>
		<title>Pagina Inicial</title>
	</head>
	
	<body>
		<h4>Página inicial</h4>
		<f:view>
			<h:form>				
				<h:commandLink action="#{pessoaMB.adicionaPessoa}">
					<h:outputText value="Adicionar Pessoa"/><br />					
				</h:commandLink>
								
			</h:form>
			
		</f:view>
		
	</body>
</html>

Managed Bean:

package br.com.van.pessoa.managedBean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;

import br.com.van.hibernate.HibernateUtil;
import br.com.van.pessoa.dao.PessoaDao;
import br.com.van.pessoa.model.Pessoa;

@ManagedBean(name = "pessoaMB")
@RequestScoped
public class PessoaMB {	

	private Pessoa pessoa;
	
	public void pessaMB(){		
		this.pessoa = new Pessoa();
	}
	
	
	public String paginaInicial(){
		System.out.println("pagina inicial");
		return "/WEB-INF/views/home.jsp";
	}

	public String adicionaPessoa(){
		System.out.println("adiciona pessoa");
		return "/WEB-INF/views/pessoa/adiciona.jsp";
	}
	
	public String novaPessoa(){
		System.out.println("\nEm nova pessoa\nNome: " + this.pessoa.getNome());
		PessoaDao dao = new PessoaDao(new HibernateUtil().getSession());
		dao.adicionaPessoa(this.pessoa);
		return "WEB-INF/views/pessoa/pessoa-adicionada.jsp";
	}
	
	
	public void setPessoa(Pessoa pessoa){
		this.pessoa = pessoa;
	}
	public Pessoa getPessoa(){
		return this.pessoa;
	}
	
}

3 Respostas

Hebert_Coelho

O h:message pode ser utilizado para tudo que é tipo de mensagem. Erro que dados na tela como você também enviar mensagens. Google c acha muito exemplo, agora tenho aqui ñ.

Se não me engano, o JSF não aceita que as páginas fiquem dentro da pasta WEB-INF.
Todas suas pastas tem que ficar fora. Para proteger o acesso à de pessoas indevidas, vai ter que usar algum tipo de login. JAAS, PhaseListener, Filter.

VandersonAssis

jakefrog:
O h:message pode ser utilizado para tudo que é tipo de mensagem. Erro que dados na tela como você também enviar mensagens. Google c acha muito exemplo, agora tenho aqui ñ.

Se não me engano, o JSF não aceita que as páginas fiquem dentro da pasta WEB-INF.
Todas suas pastas tem que ficar fora. Para proteger o acesso à de pessoas indevidas, vai ter que usar algum tipo de login. JAAS, PhaseListener, Filter.


Se não for pedir muito. Tem como você mostrar um exemplo bem simples só para eu ter uma idéia de como implementar isso?

Pesquisando na net ví essa configuração no XML. Será que isso resolveria? E há alguma contraindicação em misturar XML com annotations no JSF 2.0?

<security-constraint>
    <web-resource-collection>
        <web-resource-name>XHTML files</web-resource-name>
        <url-pattern>*.xhtml</url-pattern>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>
Hebert_Coelho

Não existe problema. O XML ainda continua ativo e muito utilizado.

Só a configuração não resolve, vc tem que implementar tudo.

Criado 18 de abril de 2012
Ultima resposta 18 de abr. de 2012
Respostas 3
Participantes 2