代码之家  ›  专栏  ›  技术社区  ›  Muneer

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

  •  4
  • Muneer  · 技术社区  · 15 年前

    我不熟悉JSF和托管bean。我有一个托管bean,它有一些私有属性和公共setter和getter方法。现在,当我将托管bean的属性添加到JSF表单时,应该直接添加私有方法,还是应该使用getter方法调用属性?

    例如:

    1. <h:inputText value="#{BeanName.userName}"/>
    2. <h:inputText value="#{BeanName.getUserName()}"/>

    上面哪个是正确的?

    3 回复  |  直到 10 年前
        1
  •  5
  •   Community CDub    8 年前

    假设您使用的是JBossEL或EL2.2+,两种方法在初始显示时都可以正常工作。但第一个事实上更正确,因为第二个只会 get 价值,但 从未 set 价值。如果你想收集输入值,你应该总是走第一条路。然后,EL(表达式语言)将自动定位 getUserName() setUserName() 方法。

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

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

        2
  •  1
  •   Java Drinker    15 年前

    如果在Java类中有类似的内容

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

    然后在JSF页面中,您可以这样访问它:

    #{myBackingBean.coolStuff}
    

    框架自动查找名为 getCoolStuff()

    希望有所帮助

        3
  •  0
  •   Saher Ahwal    15 年前

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

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