[设为首页]
中国-东莞·教育导航
  主页 | 教育资讯 | 推荐课程 | 公开课 | 考试 | 资格认证 | 外语 | 硕士考研 | 自考成考 | IT培训 | 金融财会 | 名校 | 学习资料
  导航:首页 - DWR 简化 Ajax 的 portlet 间通信 (三)

DWR 简化 Ajax 的 portlet 间通信 (三)
作者:城市学习网 来源:xue.net 更新日期:2007-12-18 阅读次数:

创建 portlet

    现在有了后端和代理函数,可以开发 portlet 本身了。所有三个 portlet 都使用相同的代码基;惟一的区别是每个 portlet 使用的 JSP 的名称。

  1. 使用清单 6 中的代码创建一个新 portlet,并给它起名为 Orders:



    清单 6. Orders.java
    package interportletmessagingusingajax;
    import java.io.*;
    import javax.portlet.*;
    public class Orders extends GenericPortlet {
      // JSP folder name
      public static final String JSP_FOLDER = "/interportletmessagingusingajax/jsp/";
      // JSP file name to be rendered on the view mode
      public static final String VIEW_JSP = "OrdersView";         
      public void init(PortletConfig config) throws PortletException{
        super.init(config);
      }
      public void doView(RenderRequest request, RenderResponse response) 
        throws PortletException, IOException {
        // Set the MIME type for the render response
        response.setContentType(request.getResponseContentType());
        // Invoke the JSP to render
        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher( 
          getJspFilePath(request, VIEW_JSP));
        rd.include(request,response);
        //this is workaround for portletsession sharing between
        //servlets and portlets
        //see http://weblogs.java.net/blog/wholder/archive/2005/02/session_session.html
        //and http://mail-archives.apache.org/mod_mbox/portals-pluto-dev/200502.mbox/%3Ca
        //2519328f3ba1d1eddfc33c924b6805d@umich.edu%3E
        //
        PortletRequestDispatcher rd2 = getPortletContext().getRequestDispatcher("/dwr/");
        rd2.include(request, response);
      }
      private static String getJspFilePath(RenderRequest request, String jspFile) {
        String markup = request.getProperty("wps.markup");
        if( markup == null )
          markup = getMarkup(request.getResponseContentType());
        return JSP_FOLDER+markup+"/"+jspFile+"."+getJspExtension(markup);
      }
      private static String getMarkup(String contentType) {
        if( "text/vnd.wap.wml".equals(contentType) )
          return "wml";
        return "html";
      }
      private static String getJspExtension(String markupName) {
        return "jsp";
      }
    }
                      



  2. 创建并打开 OrdersView.jsp(在 interportletmessagingusingajax/jsp/html 目录),并把清单 7 中的代码添加到它:



    清单 7. OrdersView.jsp
    <%@ page contentType="text/html" 
    import="java.util.*,javax.portlet.*,interportletmessagingusingajax.*" %>
    <%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
    <portlet:defineObjects/>
    <jsp:include page="javascriptFunctions.jsp" />
    <DIV style="margin: 6px">
    <H4 style="margin-bottom: 3px">Orders</H4>
    <table cellspacing="0" cellpadding="5" border="1">
    <% db.MockupDB database= db.MockupDB.getInstance();
    String[] orders=database.getOrders();
    for(int i=0;i<orders.length;i++)
    {
    %>
    <tr>
    <td><%="000000000"+String.valueOf(i+1) %></td>
    <td><a href="" onclick="return <portlet:namespace />sendOrderNr('<%=
      orders[i]%>');"><%=orders[i]%></a></td>
    </tr>
    <%
    }
     %>
    </table>
    </DIV>
                      



  3. 第二个 portlet 是 OrderDetailsPortlet.java。对这个 portlet 使用 清单 6 中的代码,并把 VIEW_JSP 变量的值改成 OrdersDetailsPortletView.jsp。这个 JSP 的代码如清单 8 所示:

    清单 8. OrdersDetailsPortletView.jsp
    <%@ page contentType="text/html" 
    import="java.util.*,javax.portlet.*,interportletmessagingusingajax.*" %>
    <%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
    <portlet:defineObjects/>
    <DIV style="margin: 6px">
    <H4 style="margin-bottom: 3px">Order details</H4>
    <table cellspacing="0" cellpadding="5" border="1">
    <tr>
    <th>Order number</th>
    <th>Order details</th>
    </tr>
    <tr>
    <%
    String orderDetailsOrderNumber=(String)renderRequest.getPortletSession().getAttribute(
      "orderDetailsOrderNumber",PortletSession.APPLICATION_SCOPE);
    String orderDetails=(String)renderRequest.getPortletSession().getAttribute(
      "orderDetails",PortletSession.APPLICATION_SCOPE);
    if(orderDetailsOrderNumber==null)
    {
    orderDetailsOrderNumber="";
    }
    if(orderDetails==null)
    {
    orderDetails="";
    }
    %>
    <td><div id="orderDetailsOrderNumber"><%=orderDetailsOrderNumber%>
    </div></td>
    <td><div id="orderDetails"><%=orderDetails%></div></td>
    </tr>
    </table>
    </DIV>
                      



  4. 第三个 portlet 是 CustomerDetailsPortlet.java。对这个 portlet 使用 清单 6 中的代码,并把 VIEW_JSP 变量的值改成 CustomerDetailsPortletView.jsp。这个 JSP 的代码如清单 9 所示:

    清单 9. CustomerDetailsPortletView.jsp
    <%@ page contentType="text/html" 
    import="java.util.*,javax.portlet.*,interportletmessagingusingajax.*" %>
    <%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
    <portlet:defineObjects/>
    <%
    %>
    <DIV style="margin: 6px">
    <H4 style="margin-bottom: 3px">Customer details</H4>
    <table cellspacing="0" cellpadding="5" border="1">
    <tr>
    <th>Order number</th>
    <th>Customer details</th>
    </tr>
    <tr>
    <%
    String customerDetailsOrderNumber=
      (String)renderRequest.getPortletSession().getAttribute(
      "customerDetailsOrderNumber",PortletSession.APPLICATION_SCOPE);
    String customerDetails=(String)renderRequest.getPortletSession().getAttribute(
      "customerDetails", PortletSession.APPLICATION_SCOPE);
    if(customerDetailsOrderNumber==null)
    {
    customerDetailsOrderNumber="";
    }
    if(customerDetails==null)
    {
    customerDetails="";
    }
    %>
    <td><div id="customerDetailsOrderNumber"><%=customerDetailsOrderNumber%>
    </div></td>
    <td><div id="customerDetails"><%=customerDetails%></div></td>
    </tr>
    </table>
    </DIV>
                      

示例应用程序现在准备好了。下一步是把 portlet 打包成 WAR 文件并在 Apache Jetspeed 门户中测试它。

 


报 名 此 课 程 / 咨 询 相 关 信 息
【预约登门】 【网上咨询】 【订座试听】 【现在报名】
课程名称
DWR 简化 Ajax 的 portlet 间通信 (三)
真实姓名
* 性 别
联系电话
* E-mail:
所在地区
咨询内容

      

相关文章:

Copyright© 2014 www.dgedu.com.cn 东莞教育在线 版权所有
中国·东莞
粤ICP备06023013号