我的一个支持bean中有一个静态的选择项列表:
private static List<SelectItem> countries = new ArrayList<SelectItem>();
Run Code Online (Sandbox Code Playgroud)
使用以下getter和setter:
public static List<SelectItem> getCountries() {
return countries;
}
public static void setCountries(List<SelectItem> countries) {
LoadSelectItemsBean.countries = countries;
}
Run Code Online (Sandbox Code Playgroud)
我无法通过我的XHTML页面访问静态列表.我试过的代码如下:
<ace:simpleSelectOneMenu id="countryField"
value="#{generalCarrierDataViewBean.carrierBean.countryId}">
<f:selectItems value="#{loadSelectItemsBean.countries}" />
<ace:ajax />
</ace:simpleSelectOneMenu>
Run Code Online (Sandbox Code Playgroud)
问题在于:
<f:selectItems value="#{loadSelectItemsBean.countries}" />
Run Code Online (Sandbox Code Playgroud)
结果的例外是:
javax.el.PropertyNotFoundException: /pages/GeneralCarrierData.xhtml @394,64 value="#{loadSelectItemsBean.states}": Property 'states' not found on type com.oag.reference.util.LoadSelectItemsBean
Run Code Online (Sandbox Code Playgroud)
有人可以建议如何从支持bean正确引用静态属性吗?
谢谢
Bal*_*usC 13
属性是根据定义而不是static
.因此,getter和setter可以简单地不是静态的,尽管它们可以反过来引用静态变量.但外界并没有看到这一点.
你有3个选择:
static
从getter中删除修改器.整个setter是不必要的,你可以删除它.
public List<SelectItem> getCountries() {
return countries;
}
Run Code Online (Sandbox Code Playgroud)如果你真的坚持访问静态"属性"(函数),请创建一个EL函数.详细信息可以在这个答案中找到:如何创建自定义EL函数来调用静态方法?
将整个List<SelectItem>
事物变成一个enum
并使用OmniFaces<o:importConstants>
.详细信息可以在这个答案中找到:如何在f:selectItems中为枚举创建和使用通用bean?
归档时间: |
|
查看次数: |
4894 次 |
最近记录: |