2016-07-22 36 views
1

在我的JSF 2.1項目中,我有一個定製的facelet標記文件,該文件使用Passing backing bean action to Facelet tag file中提供的解決方案定義actionListener。有條件地將支持bean動作傳遞給Facelet標記文件

問題是,我想要而不是在使用標記時具有actionListener,並且該解決方案使得action屬性爲必需。 我寧願不必爲此創建兩個版本的標籤(帶和不帶actionListener),因爲代碼相對較大,並且會帶來一些維護問題。

我該如何在標籤實現中有條件地添加actionListener,而不使用Java編碼(如果甚至可能的話)?

回答

0

你不能使用EL條件表達式爲action屬性,以獲得更多信息,你可以看看this question

我不知道,當你想(在至極事件)來執行的ActionListener方法,但你可以改變的ActionListener爲A4J:支持標記,並嘗試將下面的代碼

你可以調用一個js函數的條件邏輯或者只需保存條件爲參數(取決於邏輯複雜性)

<ui:param name="parameter" value="#{bean.parameterValue}/> 
<h:inputText> 
     <a4j:support event="onchange" onsubmit="if(checkCondition(parameter))){return true;}" actionListener="#{bean.yourMethod()}"/> 
</h:inputText> 

function checkCondition(parameter){ 
    //your logic 
} 

希望HEL ps