使用JSF2 + ajax调用方法

时间:2014-01-12 01:01:19

标签: ajax jsf

我已经在网上看到很多代码示例,其中使用“f:ajax”标记调用方法,但是当方法名称以“get”开头时,方法的名称会在标记中缩短。我一直无法找到原因。以下是我的意思的一个例子。

例如,在xhtml文件中,“sayWelcome”被称为:

...
<h:commandButton value="Welcome Me">
    <f:ajax execute="name" render="output" />
</h:commandButton>
<h:outputText id="output" value="#{helloBean.sayWelcome}" />
...

但bean中的方法称为“getSayWelcome”:

public String getSayWelcome(){
       return  name;
}

为什么“get”会从“f:ajax”标记中的方法名称中删除?

1 个答案:

答案 0 :(得分:1)

JavaBeansSpecification定义了在充当属性的函数之前添加get和set的属性的命名约定,有关详细信息,请参阅此article

使用JSF的表达式语言也会抱怨JavaBeans属性名称约定,您可以在此article中查看它,请参阅使用值表达式引用对象属性部分。

总之,当EL(表达式语言)找到一个句子为<h:outputText id="output" value="#{helloBean.sayWelcome}" />时,它将尝试为sayWelcome属性调用getter或setter函数,它取决于是否需要赋值(setter)或者获得价值(吸气)。