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

时间:2012-05-02 19:11:00

标签: jsf action facelets jsf-1.2 tagfile

在我的JSF 1.2项目中,我创建了一个facelet标记文件,并定义了一个inputText,它具有actionListener属性,我需要传递支持bean方法名称。 我尝试在标记文件中定义变量actionListener =“#{actionListener}”。在我调用组件的xhtml中,当我将值传递为

actionListener="#{myBean.preFillData}"

标记文件将其视为属性,错误输出表示未找到属性“preFillData”。如果我将其更改为

actionListener="#{myBean.preFillData()}"

然后标记文件中存在解析错误,因为它不像括号那样指示方法名称。

我们如何将方法名称传递给标记文件?

由于 PT

1 个答案:

答案 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

相关问题