English 中文(简体)
What is the analog of jsp .tag-files in jsf or how to avoid coping and pasting jsf/facelets code?
原标题:

I think the title is clear enough so I only add an example of typical situation.

First block of code:

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

Second (copied) block of code:

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

As you can see both blocks of code are almost similar but each of them uses different backing bean (but even beans have a superclass and all used in this example methods are actually methods of that superclass).

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

and in the commonFile.jsp you have:

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

You cannot, alas, specify what params exactly are to be included. That s why I m using the following practice: whenever you add a parameter, you put a comment ontop of the commonFile.jsp stating the name, the type and the required/optional. For example:

<!-- param: reportsBean, required -->
<!-- param: showLegend, optional, default: false, type: boolean -->
问题回答

In JSP, you can use custom tags for this. In Facelets, you can use templating or the JSF 2.0 composite components for this.





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签