Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该使用Facelets吗;jsfc“;属性_Java_Jsf_Facelets - Fatal编程技术网

Java 我应该使用Facelets吗;jsfc“;属性

Java 我应该使用Facelets吗;jsfc“;属性,java,jsf,facelets,Java,Jsf,Facelets,Facelets使用jsfc属性将HTML元素转换为关联的JSF组件。这对于快速原型设计非常有用,因为它允许您使用可视化设计工具创建视图。然而,我最近发现了Cay Horstmann的一篇博文,他在这篇博文中浪费了jsfc以及h:dataTable等复杂组件的使用 这让我感到震惊,因为Cay Horstmann是我最喜欢的多本Java书籍的作者。然而,在试图确定问题的范围/性质时,我的Google fu技能没有产生任何结果,除了who最近发布的一篇文章,他喜欢JSF(而且他毕竟是JSF的联合规范

Facelets使用jsfc属性将HTML元素转换为关联的JSF组件。这对于快速原型设计非常有用,因为它允许您使用可视化设计工具创建视图。然而,我最近发现了Cay Horstmann的一篇博文,他在这篇博文中浪费了jsfc以及h:dataTable等复杂组件的使用


这让我感到震惊,因为Cay Horstmann是我最喜欢的多本Java书籍的作者。然而,在试图确定问题的范围/性质时,我的Google fu技能没有产生任何结果,除了who最近发布的一篇文章,他喜欢JSF(而且他毕竟是JSF的联合规范负责人)。所以我的问题很简单,是否建议对facelet使用jsfc?如果不是的话,它带来了什么问题

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

<input type="text" .../>
这相当于编写以下JSF代码:

<h:inputText .../>
还可以使用此属性创建表:

<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>

#{emp.lastName}
#{emp.firstName}
在本例中,我们没有将该表链接到
h:datatable
组件,而是使用JSF组件
ui:repeat
在行上迭代,用HTML代码创建一个表

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

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


总之:
jsfc
可用于将HTML原型转换为JSF应用程序,主要用于创建概念证明或设计通用UI。但是,我认为最好在“真正的”开发开始后避免使用此组件…

好吧。。。事实上,我刚刚用第三方组件测试了jsfc属性,它工作正常。。。
<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>