目标不可访问,标识符解析为空JSF 2.2
我已经看过了: 但是没有一个为我工作 Login.xhtml:目标不可访问,标识符解析为空JSF 2.2,jsf,el,propertynotfoundexception,Jsf,El,Propertynotfoundexception,我已经看过了: 但是没有一个为我工作 Login.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/199
<?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"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Login Page</title>
</head>
<body>
<h:form prependId="false">
<h3>WELLCOME</h3>
<br />
<h3>Enter</h3>
<table>
<tr>
<td><h3>Name</h3></td>
<td><h:inputText value="#{user.name}" id="name" /></td>
</tr>
<tr>
<td><h3>password</h3></td>
<td><h:inputSecret value="#{user.password}" id="password" /></td>
</tr>
</table>
<h:commandButton value="Login">
<f:ajax execute="name password" render="out" />
</h:commandButton>
<h3>
<h:outputText id="out" value="#{user.greeting}" />
</h3>
</h:form>
</body>
</html>
我没有配置那些web.xml,因为据我所知,jsf2.2本身就是这样做的
AJAX
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
/面孔/*
状态保存方法:“客户端”或“服务器”(=默认值)。参见JSF规范2.5.2
javax.faces.STATE_保存方法
客户
javax.servlet.jsp.jstl.fmt.localizationContext
资源.应用
com.sun.faces.config.ConfigureListener
配置面:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version="2.2">
</faces-config>
这一警告:
Typee value of the field User.greeting is not used
但是有两个字符串具有相同的get和set,但没有警告
我使用tomcat 7.0.54。尝试使用不同的注释
import javax.faces.bean.ManagedBean;
而不是JavaEE6
import javax.annotation.ManagedBean;
您当前的代码有很多错误:
而不是
(这是中大多数ajax功能所必需的。没有它,页面上就无法包含支持ajax所必需的javascript
而不是
HTTP-500表示代码中存在实际错误。不要害怕500错误代码。请仔细阅读堆栈跟踪。代码中存在一些错误,如空指针异常。请检查此代码并告知结果
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class User implements Serializable {
private String name;
private String password;
private String greeting;
/**
* @return
*/
public String getGreeting() {
if (name == null ||name.length() == 0)
return "";
else
return "Welcome to JSF2 + Ajax, " + name + "!";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setGreeting(String greeting) {
this.greeting = greeting;
}
}
另外,请注意@kolossus answer并使用标准jsf标记和注释我建议您使用javax.faces.bean.ManagedBean而不是javax.annotation.ManagedBean,然后它甚至无法加载第一页。http状态500这是因为空指针异常(名称为空)。请查看我的答案。重复:然后它甚至无法加载第一页。http状态500表示发生了异常。看起来您现在有另一个问题。使用其他库,我可以查看第一页并单击按钮。
import javax.annotation.ManagedBean;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class User implements Serializable {
private String name;
private String password;
private String greeting;
/**
* @return
*/
public String getGreeting() {
if (name == null ||name.length() == 0)
return "";
else
return "Welcome to JSF2 + Ajax, " + name + "!";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setGreeting(String greeting) {
this.greeting = greeting;
}
}