Rom*_*man 13 jsf binding components duplicates
这是JSF代码:
<h:inputText binding="#{bean.input}" />
Run Code Online (Sandbox Code Playgroud)
这里是支持bean的一部分用于绑定支持:
private HtmlInputText input;
public void setInput(HtmlInputText input) {
this.input = input;
}
public HtmlInputText getInput() {
return this.input;
}
Run Code Online (Sandbox Code Playgroud)
当我第一次打开页面时一切正常但是当我第二次打开它时(刷新或在另一个选项卡中打开相同的URL或任何其他方式)我得到重复的ID错误.错误消息表明<h:inputText>没有唯一ID.以下是长错误消息的一部分:
java.lang.IllegalArgumentException: Component ID formId:inputId has already been found in the view
+id: inputId type: javax.faces.component.html.HtmlInputText@cafebabe
Run Code Online (Sandbox Code Playgroud)
添加binding属性后出现问题.如果我删除它,一切都会再次正常工作.我如何正确使用binding属性?
Bal*_*usC 34
在以下情况下可能会发生重复的组件ID错
NamingContainer.<f:subview>在包括网页,而不是父页面被宣布.NamingContainer.在这里,NamingContainer其中包括<h:form>,<h:dataTable>和<f:subview>.
使用时binding,应将其绑定到一个属性,该属性由每个请求基础上的相关组件专门使用.您的特定情况表明此绑定已由多个组件共享,可能跨越不同的请求.将组件绑定到辅助bean的属性时,支持bean绝对不应该在比请求范围更广的范围内.另请参阅JSF 2.0规范第3.1.5章(强调我的):
3.1.5组件绑定
...
组件绑定通常与通过Managed Bean Creation工具动态实例化的JavaBeans一起使用(请参见第5.8.1节"VariableResolver和Default VariableResolver").强烈建议应用程序开发人员在"请求"范围内放置由组件绑定表达式指向的托管bean.这是因为将它放在会话或应用程序范围中需要线程安全,因为UIComponent实例依赖于在单个线程内部运行.在"会话"范围内放置组件绑定时,对内存管理也可能产生负面影响.
| 归档时间: |
|
| 查看次数: |
16500 次 |
| 最近记录: |