将 JSF HTML5 友好标记与其他组件库一起使用
Using JSF HTML5 friendly markup with other components libraries
从JSF2.2开始,可以在HTML5中写入更多的元素:写入<button>
可以等同于写入<h:commandButton>
.
但这如何与其他组件库一起使用?是否可以覆盖该行为并让 <button>
从 default/standard 以外的某个库转换为组件(例如来自 primefaces 的 <p:commandButton>
)?
从文档中,我可以看到需要 TagDecorator,但我在 primefaces 中没有看到任何内容。是因为 primefaces 还没有(尚未)实现该功能,还是因为 JSF HTML5 友好标记只能生成标准组件 (http://xmlns.jcp.org/jsf/html
)?
正如您在链接到的 TagDecorator 页面上看到的那样,'html5 friendly' 标记仅与 'basic' 输入、按钮和链接相关。 PrimeFaces 有一些与这些相对应的东西,但如果你仔细看看这个 'html5 friendly' 符号的 real 优势,它主要是在设计部分。为什么..
看看这 3 个例子:
<input type="number" jsf:value="#{bean.value}"/>
<p:inputText type="number" value="#{bean.value}"/>
<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 等其他一些组件框架所提倡的 'counter action'。您可以使用纯 html 进行页面设计。在我看来,这只有有限的优势。许多相关的 ui 组件类型,如数据表、树、菜单、选项卡等,需要大量 javascript 才能工作,将 类 添加到普通的 html 等等接近页面最终的样子,因此它们在设计器中看起来不太好,因为所有这些 css 和东西都丢失了。顺便说一句,对于复杂的 jsf 组件也是如此,它们在设计器中渲染效果不佳,您仍然需要它们的 jsf 'tags'。所以最后,你会将普通的 html 标签与它们的符号和 'normal' jsf 混合在一起,这是我尝试但不喜欢的组合(均匀性很好)
所以总而言之,我认为 PF 没有添加 TagHandlers 来支持他们的框架中的这种表示法并不奇怪。我宁愿他们花时间和精力进一步改进他们的组件。
从JSF2.2开始,可以在HTML5中写入更多的元素:写入<button>
可以等同于写入<h:commandButton>
.
但这如何与其他组件库一起使用?是否可以覆盖该行为并让 <button>
从 default/standard 以外的某个库转换为组件(例如来自 primefaces 的 <p:commandButton>
)?
从文档中,我可以看到需要 TagDecorator,但我在 primefaces 中没有看到任何内容。是因为 primefaces 还没有(尚未)实现该功能,还是因为 JSF HTML5 友好标记只能生成标准组件 (http://xmlns.jcp.org/jsf/html
)?
正如您在链接到的 TagDecorator 页面上看到的那样,'html5 friendly' 标记仅与 'basic' 输入、按钮和链接相关。 PrimeFaces 有一些与这些相对应的东西,但如果你仔细看看这个 'html5 friendly' 符号的 real 优势,它主要是在设计部分。为什么..
看看这 3 个例子:
<input type="number" jsf:value="#{bean.value}"/>
<p:inputText type="number" value="#{bean.value}"/>
<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 等其他一些组件框架所提倡的 'counter action'。您可以使用纯 html 进行页面设计。在我看来,这只有有限的优势。许多相关的 ui 组件类型,如数据表、树、菜单、选项卡等,需要大量 javascript 才能工作,将 类 添加到普通的 html 等等接近页面最终的样子,因此它们在设计器中看起来不太好,因为所有这些 css 和东西都丢失了。顺便说一句,对于复杂的 jsf 组件也是如此,它们在设计器中渲染效果不佳,您仍然需要它们的 jsf 'tags'。所以最后,你会将普通的 html 标签与它们的符号和 'normal' jsf 混合在一起,这是我尝试但不喜欢的组合(均匀性很好)
所以总而言之,我认为 PF 没有添加 TagHandlers 来支持他们的框架中的这种表示法并不奇怪。我宁愿他们花时间和精力进一步改进他们的组件。