绑定输入值到JSF管理的Bean属性的正确方式是什么?

5
我刚开始接触JSF和托管的bean。我有一个有些私有属性,以及公共setter和getter方法的托管bean。当我将托管bean的属性添加到JSF表单中时,我应该直接添加私有方法还是通过Getter方法调用属性?
例如:
  1. <h:inputText value="#{BeanName.userName}"/>
  2. <h:inputText value="#{BeanName.getUserName()}"/>
上述哪一个是正确的?
3个回答

6
假设您正在使用JBoss EL或EL 2.2+,在初始显示中两种方法都可以正常工作。但第一种方法实际上更正确,因为第二种方法只会获取值,但永远不会设置值。如果您想收集输入值,应始终选择第一种方法。表达式语言(EL)将在需要时自动定位getUserName()setUserName()方法。
当您使用标准JSF EL实现时,第二种方式永远不起作用,因为它不支持直接方法调用。
要了解有关JSF的更多信息,请从我们的JSF维基页面开始。

谢谢大家。你们都帮助我更好地理解了。 - Muneer

1
如果在你的Java类中有类似以下代码:
....
private String coolStuff;

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

然后在你的jsf页面中,你可以这样访问它:
#{myBackingBean.coolStuff}

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

希望能帮到您


0

从上面开始,编号1是正确的,它是您在表单中使用EL与JSF时连接的私有字段。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接