如何在方法中传递EL参数?

时间:2012-10-22 10:01:01

标签: jsf el

我只有一个关于在backing beans方法上传递参数的问题。

我想在方法参数之间传递EL值,如:

<p:selectOneMenu id="somsgroup" value="#{store_itemController.filter_sgroup}">
   <f:selectItems value="#{commonDataFunctions.getItemByName('store_sgroup', 'id', 'title', '[tb:store_sgroup][fd:title]=${store_itemController.filter_group}', '[tb:store_sgroup][fd:title]', true)}"/>
</p:selectOneMenu>

似乎${store_itemController.filter_group}它没有被翻译,因为该方法就像字符串一样接收${store_itemController.filter_group}

有解决方案吗?

2 个答案:

答案 0 :(得分:1)

你确实不能以这种方式嵌套EL表达式。 EL表达式只能内联。

您可以使用<c:set>创建一个新变量,其中所需表达式以所需值内联,然后将此变量重用为另一个EL表达式的参数。

xmlns:c="http://java.sun.com/jsp/jstl/core"
...
<c:set var="filterGroup" value="[tb:store_sgroup][fd:title]=#{store_itemController.filter_group}" scope="request" />
...
<f:selectItems value="#{commonDataFunctions.getItemByName('store_sgroup', 'id', 'title', filterGroup, '[tb:store_sgroup][fd:title]', true)}"/>

答案 1 :(得分:-1)

我建议使用JBoss EL。如果是这样,您需要在web.xml中进行如下配置。 下载jar文件here并参考previous post

<context-param>     
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>   
</context-param>