有条件地将支持bean操作传递给Facelet标记文件

时间:2016-07-22 14:32:56

标签: jsf actionlistener facelets tagfile

在我的JSF 2.1项目中,我有一个自定义facelet标记文件,它使用Passing backing bean action to Facelet tag file中提供的解决方案定义了actionListener。

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

如果没有Java编码(如果可能的话),我应该如何有条件地在标签实现中添加actionListener?

1 个答案:

答案 0 :(得分:0)

您无法将EL条件表达式用于操作属性,有关详细信息,请查看this question

我不知道你想要什么时候(在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
}

希望有所帮助