由於其在它們的屬性期待一個bean名(而不是bean實例)一些自定義組件,我需要通過頁面之間的實際的bean名稱。由於豆本身也被非自定義組件,我想避免使用額外的ui:param
(如這裏所描述Passing action in <rich:modalPanel>),因爲它基本上將指定同一個bean。小面:通過bean名字與用戶界面:參數去action屬性
是否有可能使用配備ui:param
bean名稱指定組件的操作?
基本上我想要實現以下目標:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="/template.xhtml">
<ui:param name="beanName" value="sessionBean"/>
...
</ui:composition>
和的template.xhtml是
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
template="/someothertemplate.xhtml">
</ui:define name="somename">
<h:form>
<a4j:commandButton value="test" action="#{beanName.delete}"/>
</h:form>
</ui:define>
</ui:composition>
雖然delete方法正確定義(與action="#{sessionBean.delete}"
驗證)上面的代碼給我
javax.faces.FacesException:#{beanName.delete}:javax.el.MethodNotFoundException:/ TEMPL ate.xhtml @ 201,89行動= 「#{} beanName.delete」:未找到方法:sessionBean.delete()
一個警告在這裏:bean必須已經被實例化,並放置在範圍 - 這個表達不會創建一個託管bean。 – McDowell 2009-11-23 14:47:03
謝謝,這解決了它! – orom 2009-11-23 15:21:36
嗨:)非常有趣。但是,'刪除'不是一個標籤參數,而是一個常量?我的意思是它應該是表達式''#sessionScope [beanName]'。delete'}「'或者在這種情況下如何組合表達式? – user390525 2017-08-16 18:36:09