JSF 绑定的 HtmlPanelGrid 未显示



我使用托管 Bean 生成一个 HtmlPanelGrid,然后将其绑定到 xhtml 文件中,如下所示

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

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

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

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

使用

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

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

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

最新更新