1

在我的 JSF 2.1 项目中,我有一个自定义的 facelet 标记文件,它使用将支持 bean 操作传递给 Facelet 标记文件中提供的解决方案定义了一个 actionListener 。

问题是,我希望在使用标签时可以选择使用 actionListener,并且该解决方案需要 action 属性。我宁愿不必为此创建两个版本的标记(带有和不带有 actionListener),因为代码相对较大,并且会带来一些维护麻烦。

我应该怎么做才能有条件地在标签实现中添加 actionListener,而不使用 Java 编码(如果可能的话)?

4

1 回答 1

0

您不能将 EL 条件表达式用于操作属性,有关更多信息,您可以查看此问题

我不知道您何时希望(在 wich 事件中)执行 actionListener 方法,但您可以更改 a4j:support 标记的 actionListener 并尝试以下代码

您可以为条件逻辑调用 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
}

希望能帮助到你

于 2016-07-25T01:35:16.567 回答