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

Jsf 将支持bean操作传递到Facelet标记文件,jsf,action,facelets,jsf-1.2,tagfile,Jsf,Action,Facelets,Jsf 1.2,Tagfile,在我的JSF1.2项目中,我创建了一个facelet标记文件,并定义了一个具有actionListener属性的inputText,我需要向其传递支持bean方法名。 我尝试在标记文件中定义变量actionListener=“#{actionListener}”。在我调用组件的xhtml中,当我将值作为 actionListener="#{myBean.preFillData}" 标记文件将其视为属性,并显示错误,表明未找到属性“preFillData”。如果我把它改成 actionListe

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

actionListener="#{myBean.preFillData}"
标记文件将其视为属性,并显示错误,表明未找到属性“preFillData”。如果我把它改成

actionListener="#{myBean.preFillData()}"
然后,标记文件中出现了一个解析错误,因为它不喜欢用括号来表示方法名

如何将方法名传递给标记文件

谢谢
在标记文件中不支持传递方法表达式。只有在JSF2.0之后,才有可能使用所谓的复合组件

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

例如


带有内部
tag.xhtml



只有在Facelets上使用JSF2.0时,才可以使用
将方法表达式传递给标记文件。另请参见a.o.

谢谢@Balusc。很高兴知道JSF 1.2的局限性和升级的一个mroe原因:)关于您对actionListener的评论通常不用于调用操作,我有一个案例,在调用“另存为我的操作”之前,需要将两个文本框的值(zipcode和扩展名)合并到我的域对象中的单个属性中。这种整合是否也应该在action方法而不是actionListener中进行?啊,这是有道理的。但是为什么不直接在标记文件中声明呢?它似乎是一个可重用的
ActionListener
实现,不一定需要引用bean方法。很抱歉,当您说“为什么不直接在标记文件中声明它”时,我没有理解您。你能详细说明一下吗?@BalusC在这个例子中,如果
bean
actionMethod
没有值-空值怎么办?有没有一种方法可以在客户端进行分析?