JSF绑定HtmlPanelGrid未显示

时间:2012-06-14 22:42:01

标签: jsf-2

我使用托管bean生成HtmlPanelGrid,然后将其绑定到xhtml文件中,就像这样

    <h:panelGrid id ="questions"  binding="#{ui.generatedComponents}" />

在此页面上是一个带有下拉列表的表单,每当选择一个值时,它都会显示该页面。但是,如果选择了某些内容,则会显示所有其他内容(静态,即xhtml页面)组件,但绑定的组件永远不会显示。

但是,如果我在浏览器中重新请求该页面,它会显示它们。

Mucho令人困惑。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用binding时,您需要确保此组件在当前视图中使用此属性背后的属性 。托管bean应该在会话范围内,因为它将在同一会话中的多个视图(浏览器窗口/选项卡)之间共享相同的属性。它当然也不应该在应用范围内。托管bean应该在请求或视图范围内处于最高位置。视图范围对于此特定目的最有意义。

binding后面的属性的getter方法还应包含业务代码。它应该只归还财产,仅此而已。任何初始化都需要在(post)构造函数或支持bean类的(action)侦听器方法中完成。对此组件属性的任何操作都需要在辅助bean类的(action)侦听器方法中完成。

不这样做可能会导致尴尬的行为。