我应该使用 Facelets“jsfc”属性吗?

2024-04-27

Facelets 使用jsfc属性将 HTML 元素转换为其关联的JSF成分。这对于快速原型设计非常有帮助,因为它允许您使用可视化设计工具创建视图。然而我最近发现this http://weblogs.java.net/blog/2008/12/18/baby-steps-jsf-2博客文章由凯·霍斯特曼他在那里浪费了jsfc以及复杂的组件,例如h:数据表.

这让我感到震惊凯·霍斯特曼是多本我最喜欢的 Java 书籍的作者。然而,当我试图确定问题的范围/性质时,我的 Google-fu 技能得到的结果为零,除了最近的帖子Ed Burns http://www.coderanch.com/t/481245/JSF/java/Ed-Chris-jsfc-JSF-version,谁似乎喜欢jsfc(他毕竟是共同规格的领导者JSF)。所以我的问题很简单,是否建议使用jsfc与 Facelets ?如果不是,它会带来什么问题。


正如你所说,jsfc当您必须将 HTML 原型“转换”为 JSF 页面时,属性本质上很有用。例如,当您有 HTML 输入文本时:

<input type="text" .../>

你可以添加jsfc属性以便将此 HTML 组件转换为 JSF 组件:

<input type="text" jsfc="h:inputText" .../>

这相当于编写以下 JSF 代码:

<h:inputText .../>

正如 Facelets 文档中所述here https://facelets.dev.java.net/nonav/docs/dev/docbook.html#template-remove or here https://facelets.dev.java.net/nonav/docs/dev/docbook.html#template-repeat,属性jsfc也可用于“映射”Facelets 组件。例如,您可以删除一部分 HTML 代码:

<span jsfc="ui:remove">
This won't be compiled either <h:outputText value="#{foo.bar}"/>
</span>

您还可以使用此属性创建表:

<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组件,但我们使用 JSF 组件用 HTML 代码创建一个表ui:repeat迭代行。

如您所见,jsfc属性可用于将 JSF 页面中的一个 HTML 组件转换为一个 JSF 组件。因此,对于复杂的组件,例如数据表,您将不得不使用一些解决方法(使用ui:repeat而不是h:datatable成分)。

另一点是,您将无法使用第三方库组件,例如 RichFaces、IceFaces、Tomahawk 等提出的组件。这些库确实是 JSF 的兴趣之一。

总结一下:jsfc可用于将 HTML 原型转换为 JSF 应用程序,主要用于创建概念验证或设计通用 UI。然而,我认为一旦“真正的”开发开始,最好避免这个组件......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该使用 Facelets“jsfc”属性吗? 的相关文章