2

我认为标题足够清楚,所以我只添加一个典型情况的示例。

第一个代码块:

<div id="mailpanel">
    <h:panelGroup id="sendmailpane" styleClass="sendmailpane" layout="block"
                  rendered="#{userReports.reportRendered}">
        <o:inputTextarea promptText="#{msg['mail.listrules']}" promptTextStyle="color: #333"
               value="#{userReports.mailingList}" styleClass="maillist"/>
        <br/>
        <h:commandLink id="sendlink" value="#{msg['mail.sendLink']}"
                   action="#{userReports.sendMail}"/>
    </h:panelGroup>
</div>

第二个(复制的)代码块:

<div id="mailpanel">
    <h:panelGroup id="sendmailpane" styleClass="sendmailpane" layout="block"
                  rendered="#{projectReports.reportRendered}">
        <o:inputTextarea promptText="#{msg['mail.listrules']}" promptTextStyle="color: #333"
               value="#{projectReports.mailingList}" styleClass="maillist"/>
        <br/>
        <h:commandLink id="sendlink" value="#{msg['mail.sendLink']}"
                   action="#{projectReports.sendMail}"/>
    </h:panelGroup>
</div>

如您所见,这两个代码块几乎相似,但它们中的每一个都使用不同的支持 bean(但即使 bean 也有一个超类,并且此示例中使用的所有方法实际上都是该超类的方法)。

4

2 回答 2

2
<ui:include src="commonFile.jsp">
    <ui:param name="reportsBean" value="#{projectReports}" />
</ui:include>

commonFile.jsp你有:

<h:commandLink id="sendlink" value="#{msg['mail.sendLink']}"
               action="#{reportsBean.sendMail}" />

唉,你不能指定究竟要包含哪些参数。这就是我使用以下做法的原因:每当您添加参数时,您都会在commonFile.jsp说明名称、类型和必需/可选参数的顶部添加注释。例如:

<!-- param: reportsBean, required -->
<!-- param: showLegend, optional, default: false, type: boolean -->
于 2010-01-21T11:59:11.230 回答
1

在 JSP 中,您可以为此使用自定义标签。在 Facelets 中,您可以为此使用模板或 JSF 2.0复合组件

于 2010-01-21T12:00:18.390 回答