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>

2 番目の (コピーされた) コード ブロック:

<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では、これにテンプレートまたはJSF2.0複合コンポーネントを使用できます。

于 2010-01-21T12:00:18.390 に答える