我应该使用Facelets" jsfc"属性? [英] Should I use Facelets "jsfc" attribute?

查看:87
本文介绍了我应该使用Facelets" jsfc"属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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&quot; jsfc&quot;属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆