【问题标题】:JSF binding. Property in backing bean is a different object than the actual UI component bound to the tagJSF 绑定。支持 bean 中的属性是与绑定到标签的实际 UI 组件不同的对象
【发布时间】:2012-07-16 18:00:14
【问题描述】:

我有一个非常简单的场景。我正在尝试在我的支持 bean 中绑定该属性:

<tr:inputText secret="true" id="passw"
                      required="true" binding="#{registrationBean.password}"/>

tr 是 trinidad 标签库。

注册豆:

public RegistrationBean()
{
   ...
   CoreInputText password = new CoreInputText();
}

...

public CoreInputText getPassword() {
    return password;
}

public void setPassword(CoreInputText password) {
    this.password = password;
}

问题是,在验证阶段,引用 password 指向不同的 UIInput 组件,而不是实际绑定到所需的标签。我已经没有想法了,为什么会这样。有什么建议吗?

【问题讨论】:

  • 如果 bean 是请求范围的(这对您来说应该完全有意义),那么可能会发生这种情况,但是为什么要绑定整个组件而不仅仅是它的值呢?
  • 感谢您的信息,这很奇怪。我没想到只指向价值,我明天试试。我以为只有UI组件可以绑定JSF标签。
  • 现在我再次查看您的评论,之前我可能错误地理解了您的问题。您提到了为什么我使用“绑定”属性而不是“值”属性,对吗?如果是这样,那么因为我需要验证密码并且它是确认。起初,我以为您建议使用绑定属性,但将其用作值属性,这让我有点困惑:)

标签: jsf binding


【解决方案1】:

不要自己创建它。让 JSF 创建它。

替换

CoreInputText password = new CoreInputText();

通过

CoreInputText password;

否则,当您使用请求范围的 bean 时,每个请求都会创建一个全新的。

【讨论】:

  • 我把RegistrationBean改成session作用域,让JSF做密码组件的初始化,现在可以了。非常感谢 BalusC。
猜你喜欢
  • 2012-04-01
  • 2011-12-31
  • 2016-03-03
  • 2022-01-11
相关资源
最近更新 更多