Jsf 2 <;f:选择项目>;未在<;h:选择manylistbox>;
我从JSF开始,试图让下面的简单示例正常工作,但它只显示一个空矩形 java bean代码是:Jsf 2 <;f:选择项目>;未在<;h:选择manylistbox>;,jsf-2,selectmanylistbox,Jsf 2,Selectmanylistbox,我从JSF开始,试图让下面的简单示例正常工作,但它只显示一个空矩形 java bean代码是: import javax.faces.model.SelectItem; import java.util.*; public class SItemsBean { private List options; public SItemsBean() { options = new ArrayList(); SelectItem option = new SelectItem(
import javax.faces.model.SelectItem;
import java.util.*;
public class SItemsBean
{
private List options;
public SItemsBean()
{
options = new ArrayList();
SelectItem option = new SelectItem("ch1", "choice1", "This bean is for selectItems tag", true);
options.add(option);
option = new SelectItem("ch2", "choice2");
options.add(option);
option = new SelectItem("ch3", "choice3");
options.add(option);
option = new SelectItem("ch4", "choice4");
options.add(option);
option = new SelectItem("ch5", "choice5");
options.add(option);
}
public void setOptions(List opt)
{
options = opt;
}
public List getOptions()
{
return options;
}
}
xhtml代码是:
<h:form>
<h:outputText value="Select choices given below :"/><br/><br/>
<h:selectManyListbox id="subscriptions" value="#{SItemsBean.options}" size="3">
<f:selectItems value="#{SItemsBean.options}" />
</h:selectManyListbox>
</h:form>
并在faces-config.xml中附加以下内容:
<managed-bean>
<managed-bean-name>sItemsBean</managed-bean-name>
<managed-bean-class>sItemsBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<display-name>options</display-name>
<property-class>java.util.List</property-class>
</managed-property>
</managed-bean>
sItemsBean
sItemsBean
要求
选择权
java.util.List
您的问题是由以下托管属性引起的:
<managed-property>
<display-name>options</display-name>
<property-class>java.util.List</property-class>
</managed-property>
选择权
java.util.List
托管属性是在构造bean之后设置的。这个函数基本上用空列表设置options
属性,从而覆盖您在bean的构造函数中努力填充的列表
我不知道您为什么这样配置它,但我相信您误解了
的用途。它并不打算“声明”bean的所有可用属性,而是在构建bean之后将bean的属性设置为指定的值
要解决您的具体问题,只需从faces config.xml
中删除
与具体问题无关,您确定您正在从正确的JSF资源中学习吗?到目前为止,您发布的代码是旧JSF 1.x的典型代码,并且根本没有使用任何新的JSF 2.x特性,例如
@ManagedBean
。确保您从正确的JSF资源中学习,因为在JSF2.x中,许多事情的完成方式与JSF1.x中的不同(更好)
另见:
- (使用JSF2.x目标示例)
- 您的问题是由以下托管属性引起的:
<managed-property>
<display-name>options</display-name>
<property-class>java.util.List</property-class>
</managed-property>
选择权
java.util.List
托管属性是在构造bean之后设置的。这个函数基本上用空列表设置options
属性,从而覆盖您在bean的构造函数中努力填充的列表
我不知道您为什么这样配置它,但我相信您误解了
的用途。它并不打算“声明”bean的所有可用属性,而是在构建bean之后将bean的属性设置为指定的值
要解决您的具体问题,只需从faces config.xml
中删除
与具体问题无关,您确定您正在从正确的JSF资源中学习吗?到目前为止,您发布的代码是旧JSF 1.x的典型代码,并且根本没有使用任何新的JSF 2.x特性,例如
@ManagedBean
。确保您从正确的JSF资源中学习,因为在JSF2.x中,许多事情的完成方式与JSF1.x中的不同(更好)
另见:
- (使用JSF2.x目标示例)