[Resolvido] JSF - Dúvida em Properties

5 respostas
D

Olá.

Vejo que temos novos estudantes em JSF. Isso é bom.

Eu também estou começando mas estou com um problema em setar valores no properties.

código:

inputname.jsf

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<f:loadBundle basename="files.koderzone.messages" var="msg"/>

<html>
<head>
<title>Input Form</title>
</head>
<body>
<f:view>
<h1>
<h:outputText value="#{msg.header}" />
</h1>
<h:form id="UserEntryForm">
<h:outputText value="#{msg.your_name}" />
<h:inputText value="#{UserBean.userName}" />
<h:commandButton action="welcome" value="#{msg.button_text_ok}" />
</h:form>
</f:view>
</body>
</html>
welcome.jsf
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<f:loadBundle basename="files.koderzone.messages" var="msg"/>
<html>
<head>
<title>Welcome</title>
</head> 
<body>
<f:view>
<h3>
<h:outputText value="#{msg.welcome}" />,
<h:outputText value="#{UserBean.userName}" />&nbsp; <h:outputText value="#{msg.jsf_world}" />
</h3>
</f:view>
</body> 
</html>
UserNameBean.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package files.koderzone;

/**
 *
 * @author koderzone
 */
public class UserNameBean {
    String userName;
	
   /**
   * @return User Name
   */
   public String getUserName() {
      return userName;
   }

   /**
   * @param User Name
   */
   public void setUserName(String name) {
      userName = name;
   }
}
messages.properties
title=Enter your name page
welcome=Welcome
header=JSF 1.2 Tutorials
your_name=Enter Your Name:
button_text_ok=OK
Welcome=Welcome
jsf_world= to JSF 1.2 World!
Não importa nada que eu faça, sempre vai mostrar este erro na página ao submeter o formulário:
javax.servlet.ServletException: /exemplos/properties/inputname.jsp(16,0) '#{UserBean.userName}' Target Unreachable, identifier 'UserBean' resolved to null
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

Tem alguma coisa errada com a expressão '#{UserBean.userName}' ?

5 Respostas

fabio.massa

Fala dark123 blz?
Sim tem muita gente estudando/trabalhando com JSF, e eu sou um deles também assim como você…mas vamos lá.

Não tem problema nenhum, desde que você tenha declarado assim no faces-config.xml, e pelo erro está com cara de que faltou alguma configuração, pois não vi nada demais no código.
Espero ter ajudado…desculpa se falei alguma besteira…ainda estou sob efeito do carnaval :lol:

nandobgi

Blz Dark123,

Seu managed bean está com o seguinte nome

public class UserNameBean {

e sua EL está assim

"#{UserBean.userName}"

Verifique no seu faces.config.xml como você declarou seu managed Bean talvez você está usando #{UserNameBean}

[ ]'s

D

Fala pessoal.
Obrigado por participarem deste tópico.

Como vi, a solução era bem simples: problema de configuração mesmo, e no faces-config.xml.

Eu uso o NetBeans como IDE, pois não possuo nenhum editor que me facilite a vida, então esqueci de mapear o xml.

<managed-bean> <managed-bean-name>UserBean</managed-bean-name> <managed-bean-class>files.koderzone.UserNameBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>

Pronto, assim tudo deu certo:

Fugindo um pouco do assunto, vocês poderiam me dizer se é realmente necessário mapear todas as páginas no faces-config?
Ou apenas as que usam tags JSF em submissões de formulários como neste caso?!

<navigation-rule> <from-view-id>/exemplos/properties/inputname.jsp</from-view-id> <navigation-case> <from-outcome>welcome</from-outcome> <to-view-id>/exemplos/properties/welcome.jsp</to-view-id> </navigation-case> </navigation-rule>

* PS: Obrigado pela ajuda de todos.
Foram fundamentais para eu perceber onde estava o problema.

D

OK, já entendi.
Li um pouco a respeito no fórum.

[]s a todos

W

Estava com o mesmo problema.
Aqui resolvi da seguinte maneira
No web.xml a classe mapeada tem que estar da seguinte forma:

<managed-bean-name>user</managed-bean-name>
      <managed-bean-class>demo.User</managed-bean-class>

Se o nome da classe é User no managed-bean-class tem que estar escrito User

Criado 24 de fevereiro de 2009
Ultima resposta 24 de jun. de 2009
Respostas 5
Participantes 4