gpt4 book ai didi

java - 我应该使用 Facelets "jsfc"属性吗?

转载 作者:IT老高 更新时间:2023-10-28 21:06:24 25 4
gpt4 key购买 nike

Facelets 使用 jsfc 属性将 HTML 元素转换为其关联的 JSF 组件。这对于快速原型(prototype)设计很有帮助,因为它允许您使用可视化设计工具创建 View 。然而我最近发现this Cay Horstmann 的博客文章,其中他浪费了 jsfc 以及复杂组件(例如 h:dataTable)的使用。

这让我感到震惊,因为 Cay Horstmann 是我最喜欢的多本 Java 书籍的作者。然而,我的 Google-fu 技能在尝试确定问题的范围/性质时产生了零结果,除了 Ed Burns 的最近帖子。 ,他很喜欢 jsfc(毕竟他是 JSF 的共同规范负责人)。所以我的问题很简单,是否建议将 jsfc 与 Facelets 一起使用?如果不是,它会带来什么问题。

最佳答案

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

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

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

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

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

<h:inputText .../>

如 Facelets 文档 here 中所述或 here ,属性 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 组件 ui:repeat 使用 HTML 代码创建一个表对行进行迭代。

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

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

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

关于java - 我应该使用 Facelets "jsfc"属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2337908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com