注册 | 登录 | 设为首页 | 加入收藏
您当前的位置:飞翔学院-IT中国 → 编程开发AJAX → 文章内容

DWR 简化 Ajax 的 portlet 间通信

作者:佚名 来源:不详 发布时间:2007-12-10 22:46:51


 

创建 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="" ><%=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 门户中测试它。



上一页  [1] [2] [3] [4] [5]  下一页


  • 打印文档
  • 推荐好友
  • 返回顶部
  • 增大字体
  • 减少字体
关于本站 | 工作机会 | 合作网站 | 广告服务 | 市场合作| 联系我们 | 抽奖活动
版权所有: 武汉威俊科技有限公司 Copyright 2005-2007 www.ITCNW.COM All rights reserved