在我的JSF 2.1项目中,我有一个自定义facelet标记文件,它使用Passing backing bean action to Facelet tag file中提供的解决方案定义了actionListener。
问题是,我希望在使用标记时可以选择不使用actionListener,并且该解决方案需要使用action属性。 我不是必须为此创建两个版本的标记(有和没有actionListener),因为代码相对较大,这会带来一些维护麻烦。
如果没有Java编码(如果可能的话),我应该如何有条件地在标签实现中添加actionListener?
答案 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
}
希望有所帮助