我应该使用Facelets" jsfc"属性? [英] Should I use Facelets "jsfc" attribute?
问题描述
Facelets使用 jsfc 属性将HTML元素转换为关联的 JSF 组件。这对快速原型设计非常有用,因为它允许您使用可视化设计工具创建视图。但是我最近发现这篇博客文章 Cay Horstmann 他将 jsfc 与 h:dataTable 等复杂组件一起使用。
Facelets uses the jsfc attribute to convert HTML elements to their associated JSF components. This is rather helpful for fast prototyping as it allows you to create your views using a visual design tool. However I recently discovered this blog post by Cay Horstmann where he lays waste to the use of jsfc together with complex components such as h:dataTable.
这令我感到震惊,因为 Cay Horstmann 是我最喜欢的多本Java书籍的作者。然而,除了 Ed Burns ,他们选择喜欢 jsfc (并且他是的所有联合规范领导者> JSF 强>)。所以我的问题很简单,是否建议将 jsfc 与Facelets一起使用?如果不是它引入的问题是什么。
This alarmed me as Cay Horstmann is the author of multiple of my favorite Java books. However my Google-fu skills have yielded zero results when trying to determine the scope/nature of the problem, other than a recent post by Ed Burns, who seams to like jsfc (and he is after all the co-spec lead for JSF). So my question is simply, is it recommended to use jsfc with Facelets ? and if not what's the problem it introduces.
推荐答案
如你所说, jsfc
属性对你来说非常有用必须将HTML原型转换为JSF页面。例如,当您有HTML输入文本时:
As you said, the jsfc
attribute is essentially usefull when you have to "convert" an HTML prototype to a JSF page. For example, when you have an HTML input text:
<input type="text" .../>
您可以按顺序添加 jsfc
属性将此HTML组件转换为JSF组件:
you can add the jsfc
attribute in order to convert this HTML component into a JSF component:
<input type="text" jsfc="h:inputText" .../>
这相当于编写以下JSF代码:
This is equivalent to writing the following JSF code:
<h:inputText .../>
如Facelets文档中所述 here 或此处,属性 jsfc
也可用于映射Facelets组件。例如,您可以删除部分HTML代码:
As stated in the Facelets documentation here or here, the attribute jsfc
can also be used to "map" Facelets components. For example, you can remove a part of the HTML code:
<span jsfc="ui:remove">
This won't be compiled either <h:outputText value="#{foo.bar}"/>
</span>
您还可以使用以下属性创建表格:
You can also create a table using this attribute:
<table>
<tr jsfc="ui:repeat" value="#{dept.employees}" var="emp" class="#{emp.manager ? 'mngr' : 'peon'}">
<td>#{emp.lastName}</td>
<td>#{emp.firstName}</td>
</tr>
</table>
在此示例中,我们不将此表链接到 h:datatable
组件,但我们创建一个包含HTML代码的表,使用JSF组件 ui:repeat
来迭代行。
In this example, we do not link this table to a h:datatable
component, but we create a table with HTML code, using the JSF component ui:repeat
to iterate on rows.
如您所见, jsfc
属性可用于将一个HTML组件转换为JSF页面中的一个JSF组件。因此,对于复杂的组件,例如数据表,您将不得不使用一些变通方法(使用 ui:repeat
而不是 h:datatable
组件)。
As you can see, the jsfc
attribute can be used to convert one HTML component into one JSF component in a JSF page. So for complex components, such as the datatable, you will have to use some workarounds (using ui:repeat
instead of the h:datatable
component).
另一点是你将无法使用第三库组件,例如RichFaces,IceFaces,Tomahawk和等等。这些库确实是JSF的兴趣所在。
Another point is that you will not be able to use third-libraries components such as the ones proposed by RichFaces, IceFaces, Tomahawk, and so on. And these libraries are really one of the interests of JSF.
总结一下: jsfc
可以用来转换将HTML原型转换为JSF应用程序,主要用于创建概念证明或设计通用UI。但是,一旦真正的开发开始,我认为最好避免使用这个组件...
So to summarize: jsfc
can be usefull to transform a HTML prototype into a JSF applications, essentially for creating Proof of Concepts or designing the general UI. However, I think it is better to avoid this component once the "real" development starts...
这篇关于我应该使用Facelets" jsfc"属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!