JSF lê mas não atualiza propriedade dos managed beans, e também não aciona os métodos

1 resposta
L

Olá Pessoal,

comecei ontem a desenvolver uma aplicação usando JSF 2.0 (java.faces-2.1.7.jar) e Primefaces 3.0 (primefaces-3.1.1.jar) rodando em Tomcat 7.0.26. Não sei se é importante mencionar mas estou usando o Eclipse-Indigo para desenvolver esse pequeno projeto. Deveria ser simples mas não está sendo, ocorre que meus managed beans são achados no momento do parser do xhtml, e o conteúdo das propriedades é exibido, porém quando chamo um método o mesmo não é executado. A seguir demonstro o os arquivos de configuracao, e o cógigo fonte.

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">

	<display-name>TesteWEB</display-name>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.faces</url-pattern>
	</servlet-mapping>

	<context-param>
		<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
		<param-value>true</param-value>
	</context-param>

	<context-param>
		<description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>server</param-value>
	</context-param>

	<context-param>
		<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
		<param-value>resources.application</param-value>
	</context-param>

	<listener>
		<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
	</listener>

</web-app>
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
    
</faces-config>
ManagedBean
package testeweb.run;

//import java.io.Serializable;

import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;


@ManagedBean(name="autenticarForm")
@ViewScoped

public class AutenticarForm implements Serializable{
	
	/**
	 * 
	 */
	
	@PostConstruct
	public void inicializar() {
		System.out.println("inicializar-"+this.getClass().getName());
		nomeUsuario = "LUCIANO";
		senhaAcesso = "TESTE";
	}
	
	@PreDestroy
	public void finalizar() {
		System.out.println("finalizar-"+this.getClass().getName());
	}
	
	private static final long serialVersionUID = 1L;

	private String nomeUsuario;
	private String senhaAcesso;
	private String mensagem;

	public void autenticarUsuario(ActionEvent actionEvent) {
		
		System.out.println("Autenticar nome do usuário"+getNomeUsuario()+"/"+getSenhaAcesso());
		
	}	
	
	public String getNomeUsuario() {
		return nomeUsuario;
	}
	public void setNomeUsuario(String nomeUsuario) {
		System.out.println(nomeUsuario);
		this.nomeUsuario = nomeUsuario;
	}
	public String getSenhaAcesso() {
		return senhaAcesso;
	}
	public void setSenhaAcesso(String senhaAcesso) {
		this.senhaAcesso = senhaAcesso;
	}
	public String getMensagem() {
		return mensagem;
	}
	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}		
}
Página de Login
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui" 
	template="pagina.template">

	<ui:define name="AREA_UTIL">

		<p:growl id="notificacao" showDetail="true" />

		<p:panelGrid columns="2">
			<f:facet name="header">  
        		Autenticacao  
    		</f:facet>

			<h:outputLabel value="Nome Usuario: *" />
			<p:inputText id="nomeUsuario" value="#{autenticarForm.nomeUsuario}"/>

			<h:outputLabel value="Senha Acesso: *" />
			<p:inputText id="senhaAcesso" value="#{autenticarForm.senhaAcesso}" required="true"/>
			
			
			<f:facet name="footer">
				
				<p:commandButton 
					type="button" 
					value="Autenticar" 
					icon="ui-icon-check"
					actionListener="#{autenticarForm.autenticarUsuario}"
					style="margin:0" update="notificacao"/>
				 
			</f:facet>
		</p:panelGrid>

	</ui:define>

</ui:composition>

Caso haja necessidade colocar o código da página de template eu ponho.

Obrigado pela Ajuda.

1 Resposta

L

Pessoal,

coisa de iniciante mesmo, desculpem… mas de qualquer maneira vale informar: Eu esqueci, inocentemente, de colocar as tags <h:form> </h:form>, devido a isso não estava ocorrendo o envio dos dados nem as chamadas aos métodos.

COISA DE INICIANTE…

Criado 3 de março de 2012
Ultima resposta 3 de mar. de 2012
Respostas 1
Participantes 1