如何将参数传递给侦听器方法?
我试过这样的话:
<p:poll interval="3" listener="#{vehicleController.onPoll('12')}"
update="vehicleDataList"/>
和
<p:poll interval="3" listener="#{vehicleController.onPoll(vehicle.vehicleLicense)}"
update="vehicleDataList"/>
但它引发了以下异常:
javax.servlet.ServletException: /monitorVehicles/vehiclesList.xhtml
Failed to parse the expression [#{vehicleController.onPoll('12')}]
我怎样才能做到这一点?
答案 0 :(得分:5)
得到此异常“无法解析表达式[#{vehicleController.onPoll('12')}]”
您的环境不支持使用参数调用方法的新EL 2.2功能。
EL 2.2是Servlet 3.0的一部分,因此为了利用它,您需要部署到兼容Servlet 3.0 {8的Servlet 3.0兼容容器(例如Tomcat 7,Glassfish 3,JBoss AS 6等)。文件。如果您没有部署到与Servlet 3.0兼容的容器,或者没有兼容Servlet 3.0 web.xml
,那么您根本就不使用EL 2.2,您将获得此类异常。
如果您实际上是将目标/部署到Servlet 2.5兼容容器(因此使用EL 2.1),那么您可以使用JBoss EL在EL 2.1中使用类似EL 2.2的新功能。
答案 1 :(得分:1)
在 JSF 2 :
中如果你的听众想要一个字符串:
"#{vehicleController.onPoll('11')}"
public void onPOll(String s){
}
如果你的听众期待一个int:
"#{vehicleController.onPoll(11)}"
public void onPoll(int i){
}