在我的JSF 1.2项目中,我创建了一个facelet标记文件,并定义了一个inputText,它具有actionListener属性,我需要传递支持bean方法名称。 我尝试在标记文件中定义变量actionListener =“#{actionListener}”。在我调用组件的xhtml中,当我将值传递为
时actionListener="#{myBean.preFillData}"
标记文件将其视为属性,错误输出表示未找到属性“preFillData”。如果我将其更改为
actionListener="#{myBean.preFillData()}"
然后标记文件中存在解析错误,因为它不像括号那样指示方法名称。
我们如何将方法名称传递给标记文件?
由于 PT
答案 0 :(得分:4)
标记文件中不支持传递方法表达式。只有从JSF 2.0开始,才有可能使用所谓的复合组件。
您可以做的是分离bean引用和方法名称,以便您可以使用括号表示法来调用该方法。我只是不确定这是否适用于actionListener
,您通常不会使用它来调用操作,但它肯定适用于action
。
E.g。
<my:tag ... bean="#{myBean}" actionMethod="preFillData" />
内有tag.xhtml
<h:commandButton ... action="#{bean[actionMethod]}" />
只有当您碰巧在Facelets上使用JSF 2.0时,才可以使用<o:methodParam>
将方法表达式传递给标记文件。另见a.o. Dynamic ui include and commandButton