2

我已经下载了 primefaces 资源,看看我是否可以从中学习。jar 包含一堆使用 writer 来处理渲染等的 java 类。我期待找到一些 .xhtml 文件

<ui:composition> ... </ui:composition> and <cc:interface> etc etc

无论如何,这让我想到,是否有另一种方法来编写 facelets 和复合组件,或者他们将所有内容都写在 xhtml 文件中,然后将它们编译为 java 类?对不起,如果我的问题很荒谬,我是 JSF 的新手。

4

2 回答 2

2

模板文件和复合组件只是为了方便最终用户,因为它们易于编写和使用。基本的 JSF 实现(f:h:组件)和像PrimeFaces这样的组件库使用完全值得的 UI 组件。那是扩展 JSF类的UIComponent类。

类的开发UIComponent相对复杂和笨拙。开发时需要考虑很多事情,比如编写标签文件(你必须在一个 XML 文件中定义每个属性),配置文件(链接组件和渲染器)等等,但是您最终会得到一个更加模块化和可重用的模型以及更高的效率。它们甚至可以用于普通的旧 JSP 文件。

Facelets 模板与未编译为 Java 类的 JSP 文件不同。它们只是由本身已经用 Java 编写的 SAX (XML) 解析器加载和执行。


根据评论更新:如果涉及的业务/条件逻辑相对较多且与视图无关,例如基于非用户的一堆等标签<c:if>,它通常会表现得更好-<c:choose>受控输入。

JSF 2.0 The Complete Reference一书还在第 10 章“非复合组件”中介绍了自定义 UIComponent 开发。Java EE 5 教程也涵盖了它,但它针对的是 JSF 1.2。不幸的是,它不在 JSF 2 的Java EE 6 教程中,虽然技术没有改变,但有几个新的注解是您需要了解的。

于 2011-02-18T11:29:27.790 回答
0

如果您想修补 primefaces2 的来源,还有一个建议。它使用org.primefaces.maven-jsf-plugin生成许多.java文件的 a 。我曾经尝试修补其中一个,但令我惊讶的是,更改后总是丢失mvn package

于 2011-02-19T14:47:00.227 回答