我使用JSF2.0与JBoss 7之上的primefaces一起使用。
public void setItemValue(int value) {
this.value = value;
}在xhtml中:
<p:commandButton ajax="true" value="Button" update="@form"
action="#{bean.setItemValue(1)}"/>问题是,当我单击按钮时,我会得到一个javax.el.MethodNotFoundException,表示setItemValue(java.lang.Long)不存在。当然它不是,它应该是一个int或整数值!有人见过这个问题吗?除了改变我的方法来得到一个长时间之外,还有其他的选择吗?谢谢!
编辑:刚刚下载了JBoss 7.2的快照,并且运行良好。看起来它是JBoss 7.1.1的一个bug :(
发布于 2012-07-03 00:31:56
操作的方法表达式类型是
字符串动作()
所以用吧
public String setItemValue(Integer value) {
this.value = value;
return null;
}另请参阅:
UPDATE您需要将Servlet版本声明为3.0以充分利用EL 2.2,例如传递参数。为此,请将web.xml中的web-app元素更改为:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID"
version="3.0">发布于 2013-08-16 08:37:44
它看起来有点奇怪,但是您可以在EL 2.2中的长对象self上调用方法intValue
<p:commandButton ... action="#{bean.setItemValue((1).intValue())}"/>发布于 2012-07-03 05:22:51
不要在任何bean方法中使用get或set前缀(这是非常糟糕的做法),action属性需要一个方法名,而不是某个getter或setter
get和set仅用于bean变量的getter和setter。
最好用类似于setItemValue的东西替换assignItemValue
就像这样:
<p:commandButton ajax="true" value="Button" update="@form"
action="#{bean.assignItemValue(1)}"/>哪里
public void assignItemValue(Long value) { //you could also try with int value...
//set the value to whenever you want too...
}https://stackoverflow.com/questions/11299930
复制相似问题