我试图通过一个动态参数从我的后台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
}
这是如何引起的,我该如何解决?
嵌套EL表达式#{}
是非法的。只需删除嵌套表达式。
<h:commandLink action="#{search.showUrls(urlresult)}" value=" x" />
同样,当你在<h:dataTable>
中使用它时,为了让它正常工作,确保#{search}
bean在视图范围内,或者如果它真的需要被请求作用域,请确保在bean初始化期间保留#{search.searchResults_sites_urls}
。
参见:
- 我怎么能通过选定的行commandLink内dataTable?