JSF:使用参数

|的Bean方法调用 我无法在JSF 2.0(MyFaces)和Tomcat 6中使用带有参数的方法调用。 这是我尝试的方法:
<f:selectItems var=\"item\" value=\"#{bla.someList}
itemValue=\"#{item.value1}\"
itemLabel=\"#{item.value2}\">
   <f:param name=\"param1\" value=\"0\" />
</f:selectItems>
我无法定义这样的方法,对吗?那么为何不?
getSomeList(int a)
所以这就是我尝试的:
getSomeList() {
Integer a = Integer.parseInt(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(\"param1\")); 
return doSomething(a);
}
这就是我得到的:
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:417)
如果有人帮助我,我将不胜感激。谢谢! 更新:啊,它与#{bla.getSomeList(0)}一起使用!     
已邀请:
  我无法定义这样的方法,对吗?
getSomeList(int a)
没有。   那么为何不? 因为您使用的是不支持EL 2.2的旧Tomcat 6,所以引入了此功能。   这就是我得到的:
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:417)
因为那里有
null
。 “ 7”仅适用于链接/按钮,不适用于普通组件。 为了使EL中的方法调用能够正常工作,您需要升级到支持Servlet 3.0 / EL 2.2的容器,例如Tomcat 7,或用支持参数化方法调用的容器替换Tomcat 6的默认EL 2.1实现。有关详细信息,请参见此答案。完成后,您可以使用
<f:selectItems value=\"#{bla.getSomeList(0)}\" ... />
另一种方法是将“ 9”替换为“ 10”,这可以是一个自定义实现,它对(11)方法进行(延迟)加载。
public Map<String, List<Something>> getSomeMap() {
    return someCustomLazyLoadingMap;
}
<f:selectItems value=\"#{bla.someMap.keyName}\" ... />
    
尝试使用
<f:selectItems var=\"item\" value=\"#{bla.someList(0)} itemValue=\"#{item.value1}\" itemLabel=\"#{item.value2}\"/>
这适用于JSF的某些实现。     

要回复问题请先登录注册