问题描述
我想在JSF中有一个列表框.我已经编写了一个简单的代码,但是它不起作用.在演示页面中,我看到一个没有列表的空白框,在用户页面中,我遇到了错误.
I want to have a list box in JSF. I have written a simple code but it does not work. In demo page I see an empty box with out list and in user page I have error.
UserBean.java
UserBean.java
@ManagedBean
@SessionScoped
public class UserBean implements Serializable{
public String favYear3;//list box
public String getFavYear3() {
return favYear3;
}
public void setFavYear3(String favYear3) {
this.favYear3 = favYear3;
}
public static class Year{
public String yearLabel;
public String yearValue;
public Year(String yearLabel, String yearValue){
this.yearLabel = yearLabel;
this.yearValue = yearValue;
}
public String getYearLabel(){
return yearLabel;
}
public String getYearValue(){
return yearValue;
}
}
public Year[] year3List;
public Year[] getFavYear3Value() {
year3List = new Year[3];
year3List[0] = new Year("Year3 - 2000", "2000");
year3List[1] = new Year("Year3 - 2010", "2010");
year3List[2] = new Year("Year3 - 2020", "2020");
return year3List;
}
}
demo.xhtml
demo.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"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>first jsf page</title>
</head>
<h:body>
<h1>JSF 2 check example</h1>
<h:form>
<h:selectOneListbox value="#{UserBean.favYear3}">
<f:selectItems value="#{UserBean.favYear3Value}" var="y"
itemLabel="#{y.yearLabel}" itemValue="#{y.yearValue}" />
</h:selectOneListbox>
</h:form>
</h:body>
</html>
user.xhtml
user.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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>second jsf page</title>
</head>
<h:body>
<h:outputText value="#{UserBean.favYear3}"/>
</h:body>
</html>
我的问题:在演示页面中,我有一个空框.在用户页面中,错误为:
My problem: in demo page I have an empty box.in user page the error is:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: javax.el.PropertyNotFoundException: /demo.xhtml @24,55 value="#{UserBean.favYear3}": Target Unreachable, identifier 'UserBean' resolved to null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
root cause
javax.faces.component.UpdateModelException: javax.el.PropertyNotFoundException: /demo.xhtml @24,55 value="#{UserBean.favYear3}": Target Unreachable, identifier 'UserBean' resolved to null
javax.faces.component.UIInput.updateModel(UIInput.java:848)
javax.faces.component.UIInput.processUpdates(UIInput.java:730)
javax.faces.component.UIForm.processUpdates(UIForm.java:268)
javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1109)
javax.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:1109)
javax.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1218)
com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:74)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
怎么了?
推荐答案
您必须使bean可以访问/托管.为此,您可以
You have to make your bean reachable/managed. For this, you can either
使用CDI(@Named
)或JSF(@ManagedBean
)批注对其进行批注:
annotate it with a CDI (@Named
) or a JSF (@ManagedBean
) annotation:
@Named
@SessionScoped
public class UserBean implements Serializable{...}
或在faces-config.xml
中将其描述为managed-bean
,如下所示:
or describe it in the faces-config.xml
as a managed-bean
like this:
<managed-bean>
<managed-bean-name>userBean</managed-bean-name>
<managed-bean-class>com.example.UserBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
这篇关于javax.el.PropertyNotFoundException:/demo.xhtml @ 24,55 value =&“#{UserBean.favYear3}&":目标无法访问,标识符&#39; UserBean&#39;解析为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!