使用JSF HTML5友好标记与其他组件库

时间:2015-05-12 12:34:12

标签: html5 primefaces jsf-2.2

从JSF2.2开始,可以在HTML5中编写更多元素:编写 SELECT * FROM sensors, Location_polygon s_lp WHERE username = '$username' ORDER BY Datetime DESC; 可以等同于编写<button>

但是这如何与其他组件库一起使用?是否可以覆盖该行为并将<h:commandButton>转换为某个库中除默认/标准库之外的组件(如来自primefaces的<button>)?

从文档中,我可以看到需要TagDecorator,但我没有看到任何表面。是因为primefaces尚未(尚未)实现该功能,还是因为JSF HTML5友好标记只能生成标准组件(<p:commandButton>)?

1 个答案:

答案 0 :(得分:2)

正如您在链接到的TagDecorator页面上看到的那样,'html5 friendly'标记仅与'基本'输入,按钮和链接相关。 PrimeFaces有一些对应的,但如果你仔细看看这个'html5友好'符号的真正的优势,它主要是在设计部分。为什么..

看看这三个例子:

  1. <input type="number" jsf:value="#{bean.value}"/>
  2. <p:inputText type="number" value="#{bean.value}"/>
  3. <h:inputText type="number" value="#{bean.value}"/>http://balusc.blogspot.com.au/2012/06/adding-html5-attributes-to-standard-jsf.html
  4. 第一个是html(5)友好。但是在客户端上有效渲染的2和3依赖于(在这种情况下)渲染器的共享实现(可以在tagDecorator页面中看到)。什么1呈现取决于PrimeFaces做什么。它们都可以在客户端呈现<input type="number".../>,但它们也可以渲染更复杂的东西(正如PrimeFaces现在所做的那样)。

    这个化妆有什么好处?正如我所看到的那样,它是所有Javascript框架和Tapestry所倡导的其他组件框架的“反制行动”。你可以使用普通的HTML进行页面设计。在我看来,这只有有限的优势。许多相关的ui组件类型,如数据表,树,菜单,选项卡等,需要大量的javascript才能工作,将类添加到普通的html以及更接近页面最终的样子,因此它们看起来不太好因为所有这些css和东西都缺失了。对于复杂的jsf组件来说也是如此,它们在设计器中不能很好地渲染,你仍然需要jsf'标签'。所以最后,你要将普通的html标签与他们的符号和'普通'jsf混合,这是我尝试和不喜欢的组合(一致性很好)

    总而言之,我认为PF没有添加TagHandlers来支持这种表示法的表示法并不奇怪。我宁愿让他们花时间和精力进一步改进他们的组件。