我正在尝试从我的支持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
}
这是如何引起的?如何解决?
答案 0 :(得分:5)
嵌套EL表达式#{}
是违法的。只需删除嵌套表达式。
<h:commandLink action="#{search.showUrls(urlresult)}" value=" x" />
此外,正如您在<h:dataTable>
中使用它一样,为了使其正常工作,请确保#{search}
bean在视图范围内,或者确实需要请求作用域,确保在bean初始化期间保留#{search.searchResults_sites_urls}
。