将输入值绑定到JSF托管bean属性的正确方法是什么?

时间:2010-06-24 18:09:30

标签: jsf el

我是JSF和托管bean的新手。我有一个托管bean,其中包含一些私有属性,包含公共setter和Getter方法。现在,当我将托管bean的属性添加到JSF表单时,我应该直接添加私有方法还是应该使用Getter方法调用属性?

例如:

  1. <h:inputText value="#{BeanName.userName}"/>
  2. <h:inputText value="#{BeanName.getUserName()}"/>
  3. 上面哪一个是正确的?

3 个答案:

答案 0 :(得分:6)

假设您使用的是JBoss EL或EL 2.2+,两种方式都可以在初始显示中正常工作。但第一个实际上更正确,因为第二个只有get值,但从不 set值。如果要收集输入值,则应始终采用第一种方式。然后EL(表达语言)将在需要时自动找到getUserName()setUserName()方法。

当您使用标准JSF EL实现时,第二种方法永远不会起作用,因为它不支持直接方法调用。

要了解有关JSF的更多信息,请从our JSF wiki page开始。

答案 1 :(得分:1)

如果在你的java类中有类似

的东西
....
private String coolStuff;

public String getCoolStuff() {
    return coolStuff;
}
....

然后在你的jsf页面中你可以这样访问它:

#{myBackingBean.coolStuff}

框架会自动查找名为getCoolStuff()

的方法

希望有所帮助

答案 2 :(得分:0)

数字1从上面是正确的,如果您在表单中使用带有JSF的EL,则它是您连接的私有字段。

您仍然需要托管bean调用的getter和setter来获取值,以便将它们保存在数据库中....等等