Creating JSPs for Displaying Custom Assets in the Asset Publisher

Adding Asset Features to Your UI
Step 2 of 5

Before proceeding, you must tie up a loose end from the previous step. Remember that you implemented getJspPath methods in your GuestbookAssetRenderer and EntryAssetRenderer classes. These methods return paths to the JSPs the Asset Publisher uses to display the assets’ full content. The getJspPath method of GuestbookAssetRenderer returns "/asset/guestbook/full_content.jsp", and the getJspPath method of EntryAssetRenderer returns "/asset/entry/full_content.jsp". It’s time to create these JSPs.

Follow these steps:

  1. In the guestbook-web module project, create a new folder called asset under the resources/META-INF/resources folder. Add two folders to this new folder: entry and guestbook.

  2. Create a new file called full_content.jsp in the /asset/guestbook folder. This JSP displays a guestbook asset’s full content. Add the following code to this file:

    <%@include file="../../init.jsp"%>
    
    <%
    Guestbook guestbook = (Guestbook)request.getAttribute("gb_guestbook");
    
    guestbook = guestbook.toEscapedModel();
    %>
    
    <dl>
            <dt>Name</dt>
            <dd><%= guestbook.getName() %></dd>
    </dl>
    

    This JSP grabs the guestbook object from the request and displays the guestbook’s name. In GuestbookAssetRenderer, the getJspPath method used the following to add the gb_guestbook request attribute:

    request.setAttribute("gb_guestbook", _guestbook);
    

    The guestbook’s toEscapedModel method belongs to the GuestbookModelImpl class, which was generated by Service Builder. This method returns a safe guestbook object (a guestbook in which each field is HTML-escaped). Calling guestbook = guestbook.toEscapedModel() before displaying the guestbook name ensures that your JSP won’t display malicious code that’s masquerading as a guestbook name.

  3. Next, in the /asset/entry folder, create a full_content.jsp for displaying a guestbook entry asset’s full content. Add the following code to this file:

    <%@include file="../../init.jsp"%>
    
    <%
    Entry entry = (Entry)request.getAttribute("gb_entry");
    
    entry = entry.toEscapedModel();
    %>
    
    <dl>
            <dt>Guestbook</dt>
            <dd><%= GuestbookLocalServiceUtil.getGuestbook(entry.getGuestbookId()).getName() %></dd>
            <dt>Name</dt>
            <dd><%= entry.getName() %></dd>
            <dt>Message</dt>
            <dd><%= entry.getMessage() %></dd>
    </dl>
    

This JSP is almost as simple as the one for guestbooks. The only difference is that you’re displaying three fields of the guestbook entry entity as opposed to one field of the guestbook entity.

Test your new JSPs by clicking a guestbook’s or guestbook entry’s title in the Asset Publisher. The Asset Publisher renders full_content.jsp:

Figure 1: When you click the title for a guestbook or guestbook entry in the Asset Publisher, your full_content.jsp should be displayed.

Figure 1: When you click the title for a guestbook or guestbook entry in the Asset Publisher, your `full_content.jsp` should be displayed.

By default, when displaying an asset’s full view, the Asset Publisher displays additional links for Twitter, Facebook, and Google Plus. These links publicize your asset on social media. The Back icon and the View in Context link return you to the Asset Publisher’s default view.

« Adding Asset Features to Your User InterfaceEnabling Tags, Categories, and Related Assets for Guestbooks »
这篇文章有帮助吗?
0 人中有 0 人觉得有帮助