我有一个页面,其中有条件呈现的内容由侧面菜单中的几个链接控制。所有这些内容都有一个默认呈现为假的数据表。一切正常,除了当页面加载时所有的 bean 都在执行并且所有的 bean 都在做昂贵的数据库工作。
我希望当用户单击侧面菜单时,将呈现相应的数据表,然后才会初始化关联的托管 bean。我怎样才能做到这一点?
我有一个页面,其中有条件呈现的内容由侧面菜单中的几个链接控制。所有这些内容都有一个默认呈现为假的数据表。一切正常,除了当页面加载时所有的 bean 都在执行并且所有的 bean 都在做昂贵的数据库工作。
我希望当用户单击侧面菜单时,将呈现相应的数据表,然后才会初始化关联的托管 bean。我怎样才能做到这一点?
你基本上有两个选择:
不要通过ajax导航。相反,通过 GET 导航。另请参阅如何在 JSF 中导航?如何使 URL 反映当前页面(而不是上一个页面)。
或者,不要有条件地呈现内容。相反,有条件地构建内容。另请参阅如何通过导航菜单进行 ajax-refresh 动态包含内容?(JSF SPA)
我最近遇到了这样的问题。我决定使用相同的条件来决定渲染或不渲染这个或那个组件来决定初始化或不初始化它的支持变量。例如,您有一个带有代码的JSF页面:
<h:outputText rendered="#{bean.isRendered()}" value="#{bean.text}"/>
豆子如下:
@PostConstruct
public void init(){
if(isRendered){
text = "Hello World";
}
}