【问题标题】:What is the correct way to bind input value to JSF managed bean property?将输入值绑定到 JSF 托管 bean 属性的正确方法是什么?
【发布时间】:2011-03-07 23:05:57
【问题描述】:

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

例如:

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

上面哪一个是正确的?

【问题讨论】:

    标签: jsf el


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢你们。两者都帮助我更好地理解。
    【解决方案2】:

    如果在你的 java 类中你有类似的东西

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

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

    #{myBackingBean.coolStuff}
    

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

    希望有帮助

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-10
        • 2013-09-30
        • 2011-04-12
        • 1970-01-01
        • 2012-06-30
        • 2020-05-06
        相关资源
        最近更新 更多