java - 使用 JSF 的动态网页

标签 java ajax jsf web-frameworks

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

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

我们为“非程序员”构建了一个工具,用于根据布局、事件和相关功能定义 Web View 。定义 View 后,就会以编程方式创建 DHTML 并将其存储在数据库中。

View 的用户请求 (AJAX) 由操作对象处理,该操作对象从数据库中提取 DHTML 内容并将其发送到浏览器,浏览器将在模板或模式窗口内呈现。

出于各种原因,我们计划摆脱 Javascript 框架并将 View 事件管理移至服务器端。

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

我们是否错过了一些 JSF 功能或解决方法?

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

最佳答案

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

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

这有时会变得很棘手,因为当您将 JSTL 与 JSF 标记混合使用时,您需要了解每种标记将在渲染生命周期中的哪个位置执行,以使其执行您想要的操作,但是一旦您了解了这一点,它就是最重要的简单的方法。

  • 将组件绑定(bind)到托管 Bean 上的字段并在服务器端操作它

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

它不一定是 panelgrid,当然,它可以是 PrimeFaces Layout 控件,您可以在其中动态生成 layoutUnit 子级。要点是,任何控件都可以绑定(bind)到托管 bean 中的变量,并且您可以根据您想要的任何标准在服务器端操作它。

关于java - 使用 JSF 的动态网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5801733/

相关文章:

jsf - 在 JSF 中从日期的一种字符串表示形式转换为另一种表示形式

java - 导出文本文件并在文本字段中添加名称

java - 如何在 JNI 中找到对象的字段描述符?

javascript - 从 href 标签调用 div,但同时使其出现在地址栏链接中

JSF - actionListener 标记调用不采用 ActionEvent 参数的方法

eclipse - 使用 Maven 的 Eclipse 中的 JSF 项目为 FacesServlet 提供 ClassNotFoundException

java - 在应用程序的 Assets 目录中在 Android 中创建符号链接(symbolic link)

Java - 在无限循环中返回多个字符串用户输入

javascript - Angular.js即ajax请求问题

javascript - 函数未定义即使它位于同一文件中