<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Welcome</title>
</h:head>
<h:body>
<h:form>
<h3>Please enter your name and password.</h3>
<table>
<tr>
<td>Name:</td>
<td><h:inputText value="#{user.name}"/></td>
</tr>
<tr>
<td>Password:</td>
<td><h:inputSecret value="#{user.password}"/></td>
</tr>
</table>
<p><h:commandButton value="Login" action="welcome"/></p>
</h:form>
</h:body>
</html>
JSF HelloWorld
index.xhtml
Код:
welcome.xhtml
Код:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Welcome</title>
</h:head>
<h:body>
<h3>Welcome to JavaServer Faces, #{user.name}!</h3>
</h:body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Welcome</title>
</h:head>
<h:body>
<h3>Welcome to JavaServer Faces, #{user.name}!</h3>
</h:body>
</html>
UserBean.java
Код:
package com.corejsf;
import java.io.Serializable;
import javax.inject.Named;
// or import javax.faces.bean.ManagedBean;
import javax.enterprise.context.SessionScoped;
or import javax.faces.bean.SessionScoped;
@Named("user") // or @ManagedBean(name="user")
@SessionScoped
public class UserBean implements Serializable {
private String name;
private String password;
public String getName() { return name; }
public void setName(String newValue) { name = newValue; }
public String getPassword() { return password; }
public void setPassword(String newValue) { password = newValue; }
}
import java.io.Serializable;
import javax.inject.Named;
// or import javax.faces.bean.ManagedBean;
import javax.enterprise.context.SessionScoped;
or import javax.faces.bean.SessionScoped;
@Named("user") // or @ManagedBean(name="user")
@SessionScoped
public class UserBean implements Serializable {
private String name;
private String password;
public String getName() { return name; }
public void setName(String newValue) { name = newValue; }
public String getPassword() { return password; }
public void setPassword(String newValue) { password = newValue; }
}
Пользуюсь IDE NetBeans 7. Когда ввожу имя в текстовое поле и нажимаю на кнопку, по идее должно отобразиться приветствие с моим именем, но, вместо этого tomcat выдает ошибку после нажатия на кнопку
Цитата:
/index.xhtml @15,55 value="#{user.name}": Target Unreachable, identifier 'user' resolved to null
Т.е. он не видит объект user или что-то еще? Как это правильно написать? В чем может быть проблема?
Ошибка же нам говорит о том, что переменная-идентификатор user не установлена, т.е. равна null, а потому невозможно получить свойство класса name.
Как написать - тут хз, лучше спросить в разделе Java.
Да, это понятно, что она недоступна, но не понятны причины - так как это мой первый опыт JSF (и английский у меня не на самом хорошем уровне). Я думал, строка @Named("user") как раз устанавливает этот идентификатор, но, судя по всему - не правильно думал. Думаю сюда заглянут кто-нибудь из Java раздела, не создавать же дубль в другой ветке
Все решилось заменой @Named("user") на @ManagedBean(name="user"). Пока не знаю почему, но именно это работает