如何在监听器中传递参数?

时间:2013-03-22 12:17:04

标签: jsf primefaces arguments listener el

如何将参数传递给侦听器方法?

我试过这样的话:

<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')}]

我怎样才能做到这一点?

2 个答案:

答案 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){

}