在我的JSF 2.1项目中,我有一个自定义的facelet标记文件,该文件使用"将backingbean操作传递给facelet"标记文件中提供的解决方案来定义actionListener。
问题是,我希望在使用标记时选择而不是具有actionListener,并且该解决方案需要action属性。我不想仅仅为此创建两个版本的标记(有和没有actionListener),因为代码相对较大,这会带来一些维护麻烦。
在没有Java编码的情况下(如果可能的话),我应该做些什么来在标记实现中有条件地添加actionListener?
你不能在动作属性中使用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
}
希望它能帮助