我使用托管bean生成HtmlPanelGrid,然后将其绑定到xhtml文件中,就像这样
<h:panelGrid id ="questions" binding="#{ui.generatedComponents}" />
在此页面上是一个带有下拉列表的表单,每当选择一个值时,它都会显示该页面。但是,如果选择了某些内容,则会显示所有其他内容(静态,即xhtml页面)组件,但绑定的组件永远不会显示。
但是,如果我在浏览器中重新请求该页面,它会显示它们。
Mucho令人困惑。有什么想法吗?答案 0 :(得分:0)
使用binding
时,您需要确保此组件在当前视图中使用此属性背后的属性 。托管bean应该不在会话范围内,因为它将在同一会话中的多个视图(浏览器窗口/选项卡)之间共享相同的属性。它当然也不应该在应用范围内。托管bean应该在请求或视图范围内处于最高位置。视图范围对于此特定目的最有意义。
binding
后面的属性的getter方法还应包含否业务代码。它应该只归还财产,仅此而已。任何初始化都需要在(post)构造函数或支持bean类的(action)侦听器方法中完成。对此组件属性的任何操作都需要在辅助bean类的(action)侦听器方法中完成。
不这样做可能会导致尴尬的行为。