2015-05-12 32 views
3

从JSF2.2开始,可以在HTML5中编写更多元素:编写<button>可以等效于编写<h:commandButton>与其他组件库一起使用JSF HTML5友好标记

但是,这与其他组件库如何工作?是否可以重写该行为,并将<button>从默认/标准库(比如来自primefaces的<p:commandButton>)转换为某个库中的组件?

从文档中,我可以看到需要一个TagDecorator,但我在primefaces中没有看到任何东西。这是因为primefaces还没有实现该功能,还是因为JSF HTML5友好标记只能生成标准组件(http://xmlns.jcp.org/jsf/html)?

回答

2

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

这些3个例子看看:

  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

第一个是HTML(5)友好。但是,2和3在客户端上渲染的东西依赖于渲染器的共享实现(在tagDecorator页面中可以看到)。什么1呈现是依赖PrimeFaces做什么。他们都可以在客户端渲染一个<input type="number".../>,但他们也可以渲染更复杂的东西(如PrimeFaces现在所做的)。

那么这种妆容的优点是什么?就像我看到的那样,这是对所有Javascript框架和Tapestry所倡导的其他组件框架的“反作用”。你可以使用纯html来进行页面设计。在我看来,这只有有限的优势。许多相关的UI组件类型,如数据表,树,菜单,选项卡等,都需要大量的javascript才能工作,为纯HTML添加类并且更接近页面最终的样子,因此它们看起来不太好在设计师,因为所有这些CSS和东西都失踪了。对于复杂的jsf组件,btw也是如此,它们在设计器中不会很好,而且你仍然需要jsf'标签'。所以最后,你会混合纯html标记与他们的符号和'正常'jsf,我试过和不喜欢的一个组合(一致性好)

所以总而言之,我不认为这很奇怪PF没有添加TagHandlers来支持这个符号到他们的框架。我宁愿让他们花费时间和精力来进一步改进他们的组件。

+2

Bravo! tl; dr:“HTML5友好标记”仅当您打算手工**时才有意义,将JSF与客户端框架(如jQuery UI,Bootstrap等)结合在一起,而不是使用已使用这些框架的JSF组件库(PrimeFaces,BootsFaces等)。食物的思想:http://stackoverflow.com/questions/4421839/what-is-the-need-of-jsf-when-ui-can-be-achieved-from-css-html-javascript-jquery – BalusC

+0

@BalusC :并不重要(我可以花很多钱)但我不确定Bravo是否有任何讽刺! ;-) – Kukeltje

+0

我很高兴看到另一个没有被HTML5嗡嗡声弄瞎的人。所以确实有一些讽刺,但没有针对你:) – BalusC