4

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

actionListener="#{myBean.preFillData}"

标记文件将其视为一个属性,并且错误指示未找到属性“preFillData”。如果我将其更改为

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

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

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

谢谢 PT

4

1 回答 1

4

标记文件不支持传递方法表达式。只有从 JSF 2.0 开始,所谓的复合组件才有可能。

您可以做的是将 bean 引用和方法名称分开,以便您可以使用大括号表示法来调用方法。我只是不确定这是否适用于actionListener,您通常不会使用它来调用操作,但它绝对应该适用于action.

例如

<my:tag ... bean="#{myBean}" actionMethod="preFillData" />

带内tag.xhtml

<h:commandButton ... action="#{bean[actionMethod]}" />

仅当您碰巧在 Facelets 上使用 JSF 2.0 时,您才能使用<o:methodParam>将方法表达式传递给标记文件。另请参阅 ao Dynamic ui include 和 commandButton

于 2012-05-02T19:44:00.363 回答