如何使用EL 2.2方法表达式将动态参数传递给支持bean?

时间:2012-01-03 15:18:29

标签: jsf-2 facelets el

我正在尝试从我的支持bean中的JSF 2.0页面调用一个函数来传递一个动态参数。只要我传递一个静态字符串,它工作正常,但是当我尝试使用动态字符串时,我总是得到一个EL解析错误。我猜它是一个语法问题,但我想不出用方法表达式做另一种方法。我知道我可以用<f:param..../>标签来做,但我不会放弃这个:)

<h:dataTable  var="urlresult" value="#{search.searchResults_sites_urls}">
    <h:column>
        <h:form>
            <h:outputText value="#{urlresult}" />
            <h:commandLink action="#{search.showUrls(#{urlresult})}" value=" x" />
        </h:form>
    </h:column>
</h:dataTable>

支持bean中的方法:

public void showUrls(String url) {
    //CODE
}

这是如何引起的?如何解决?

1 个答案:

答案 0 :(得分:5)

嵌套EL表达式#{}是违法的。只需删除嵌套表达式。

<h:commandLink action="#{search.showUrls(urlresult)}" value=" x" />

此外,正如您在<h:dataTable>中使用它一样,为了使其正常工作,请确保#{search} bean在视图范围内,或者确实需要请求作用域,确保在bean初始化期间保留#{search.searchResults_sites_urls}

另见: