0

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

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

On this page is a form, with a dropdown, and whenever a value is selected, it shows the page. 然而,当某些东西被选中时,每隔一个(静态的,即在 xhtml 页面中)组件都会显示出来,但绑定的组件永远不会显示出来。

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

多混乱。有任何想法吗?

4

1 回答 1

0

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

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

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

于 2012-06-15T13:12:38.827 回答