使用JSF的动态web页面



我们有一个巨大的(许多不同的视图)Java EE应用程序,其web层将DHTML内容传输到浏览器以生成当前视图。

我们使用自定义Javascript AJAX框架来管理视图上的标准化组件事件。框架由一个初始页面模板加载,该模板将承载所有以下不同的视图。

我们为"非程序员"构建了一个工具,用于定义布局、事件和相关功能方面的web视图。一旦定义了视图,DHTML将以编程方式创建并存储在数据库中。

视图的用户请求(AJAX)由操作对象处理,该操作对象从DB中提取DHTML内容并将其发送给浏览器,浏览器将在模板或模态窗口中呈现。

由于各种原因,我们计划摆脱Javascript框架,并将视图事件管理转移到服务器端。

为了寻找一个可行的Java框架,我们研究了JSF,它似乎拥有我们需要的所有功能,除了前面描述的动态创建视图的功能。

我们是否错过了JSF的一些特性或解决方法?

如果没有,你是否知道其他类似的框架,我们可以适应我们的需求?

当然可以在JSF中动态构建视图。在不了解您正在构建的内容的更多细节的情况下,我不能禁止最佳方法,但这里有一些动态构建视图的方法:

  • 使用ui:include和src属性绑定到托管bean的属性
  • 混合使用ui:include和JSTL

这有时会变得棘手,因为当您将JSTL与JSF标记混合使用时,您需要了解在呈现生命周期中每种标记将在何处执行以使其执行您想要的操作,但是一旦您了解了这一点,这就是最直接的方法。

  • 将组件绑定到托管bean上的字段,并在服务器端操作它

我采用这种方法在应用程序中动态生成表单。表单将根据报表类型、用户类型和大量其他标准而更改。我只是将面板网格JSF组件绑定到服务器端的一个字段,然后开始"手工"创建子元素(例如:UISelectOne dropdown = new UISelectOne();),并在此过程中将它们作为子元素添加到面板网格(例如:panelgrid.getChildren().add(dropdown);)。

它不一定是一个panelgrid,当然,它可以是一个PrimeFaces Layout控件,在那里你可以动态地生成layoutUnit子控件。关键是,任何控件都可以绑定到托管bean中的变量,并且您可以根据需要的任何标准在服务器端操作它。

相关内容

  • 没有找到相关文章

最新更新