html - 用于企业门户 UI 层的 JSF 与 HTML(JSP)。选择哪一个?为什么?

标签 html jsp jsf user-interface

<分区>

最近,我的公司决定重建一个企业门户网站,全局各地的人们都可以使用该门户网站来注册产品以延长保修期。他们提出了 J2EE(spring MVC)和 Oracle 作为业务层的技术堆栈,并决定使用 JSF(java server faces)来设计前端的东西(用户界面)我是前端工程师,想要appose JSF 因为它会减少我对生成的标记的控制,而且 JSF 会在页面中注入(inject)/生成不必要的标记,这将成为浏览器的不健康食物。此外,实现浏览器兼容性也将变得困难,因为我无法控制生成的标记很难应用正确的 CSS 行为。也不可能使用像流体布局、无表格布局这样的概念。 所有这些都会导致糟糕的用户体验。我的想法是使用手工编码的 HTML 开发 UI,然后将这些 .html 文件转换为 JSP,并将这些 JSP 插入 Spring MVC 架构。

说了这么多,我需要提出一个提案,证明在 UI 层用 HTML 替换 JSF 是合理的,您的输入/想法和建议将很有值(value),请回信。

此外,我不认为 XHTML 是其他选项,它必须是 HTML?让我知道您的想法以及是什么让您这样想?

感谢您的光临。如果阅读所有这些占用了您很多时间,我深表歉意。

最佳答案

当您使用具有“纯”JSF 组件的老式 JSF 1.0/1.1 API 时,您所说的是正确的。没有可以用来表示 HTML 的内置组件 <div>元素(以便您可以以语义方式完成一般页面布局)。此外,在 JSF 页面中嵌入“纯”HTML 很痛苦,因为它在 JSF 组件树之外和之前呈现。您必须将纯 HTML 放入 <f:verbatim>到处都是标签。纯粹主义者和无意识者或多或少被迫使用 <h:panelGrid> (它呈现一个 <table> )来定位页面中的元素。

除此之外,在早期的 JSF 时代,Netbeans 附带了一个内置的可视化 JSF 编辑器,使您能够可视化地拖放和绑定(bind) JSF 组件,而无需编写任何代码行。这显然会生成很多乍一看不必要且无法维护的代码,并且元素的像素精确定位是通过 <h:panelGrid> 实现的“幕后”。 .考虑到可维护性和 Web 语义,这些类型的 JSF 应用程序完全是一场灾难。

在前端开发方面,您会听到的关于 JSF 的大多数负面故事都与此相关。从那时起,大多数 JSF 用户/观察者/咆哮者目前仍然盲目地关注这个,因为他们有过糟糕的体验和/或他们认为 JSF 如今仍然是一样的和/或他们将可视化编辑器视为 JSF 的一部分,而它“只是”另一个(坏的)工具。此外,大多数说“JSF 糟透了”的人通常是那些开始使用可视化/拖放式编辑器的人,他们对幕后发生的事情(尤其是 Servlet API!)没有任何扎实的背景知识。

自从 JSF 1.2(已经 4 年多以前发布)以来,<h:panelGroup>组件有一个额外的属性:layout="block"这将让它(最终)呈现一个完全有值(value)的 HTML <div>元素,这样您就可以仅使用 JSF 组件带来更语义化的布局。但不仅如此,JSF 1.2 还带有一个改进的 View 处理程序,它可以将纯 HTML 嵌入到其他 JSF 组件中,而无需麻烦 <f:verbatim>。标签。你可以很好地把 <div>在不增加冗长的情况下围绕您想要的元素。

尽管这是一项重大改进,但标准 JSF 实现仍然存在另外两个主要(但不直接与 UI 相关)问题:1) 请求之间的状态管理很难在不获取 session 范围的情况下进行(考虑保留相同的范围)表格和下拉列表中的数据以及例如 rendered 属性的条件); 2) 一切都通过 POST,你不能很好地通过 GET 调用 JSFish 操作。

自从 JSF 2.0 以来,几乎已经 1 岁了,这些问题被一个新的范围、 View 范围和一组新的 GET 操作组件所覆盖。此外,JSP 被 Facelets 取代为默认 View 技术。 Facelets 极大地简化了模板化和创建复合组件,而无需求助于原始 Java 代码和/或自定义组件/渲染器。即使它是基于 XHTML 的,它也可以完美地呈现 HTML5 有效响应,只需 <!DOCTYPE html> . XHTML 就在那里,因为 Facelets 在幕后使用基于 XML 的工具来生成 (X)HTML 输出。基于 XHTML 的模板并不意味着它只能发出 XHTML/XML。

总而言之,当您使用 JSF 1.2 或更新版本时,您的标记问题不是问题,而且 XHTML (Facelets) 也不应该成为问题,因为它可以完美呈现 HTML5 有效标记。

关于html - 用于企业门户 UI 层的 JSF 与 HTML(JSP)。选择哪一个?为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3273595/

相关文章:

html - 单击按钮更改铁页选定值

html - 如何在 CSS 中实现标签的 float

jquery - 修复主 div 和 float 菜单后面的循环图像背景?

javascript - react JS : How do I create a downloadable link with PDF documents to download?

jsp - Java Web 应用程序未编译 JSP

java - JSF2.0 - *.xhtml 页面给出 404-NotFound 但 *.jsp 工作正常吗?

java - jsp文件中未定义的构造方法

java - 无法使 Ajax 与 Struts/Spring 一起工作

java - HttpSession 超时后重定向

java - 只读微调器