各層的內容經過異步獲得xml數據,並對每一個模塊用一個xsl文件解析,將解析結果放入指定層
這裏只顯示主要的代碼javascript
1> jsp頁面上定義層的id, 並在form中指定須要異步加載數據的js方法html
<form action="javascript:showAllXML();"> //調用異步加載數據的js方法 <div id="swgl"> //頁面上顯示數據的層 </form>
2> js文件裏的方法java
//各個層的全局變量: var lgwgl_swgl = document.getElementById("swgl"); //進行異步調用的函數 function doAjax(url,doNext,isXML){ var req = newXMLHttpRequest(); //回調 req.onreadystatechange = getReadyStateHandler(req, doNext,isXML); req.open("GET", url, true); //不要被緩存 req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.setRequestHeader("If-Modified-Since","0"); req.send(); } //顯示全部模塊內容(入口函數,在index.jsp中調用該函數) function showAllXML(){ //異步調用獲得xml數據並解析 doAjax(basePath+"/action/fileListAction.do?method=getPageList",showGwgl,1); //showGwgl:被調用的函數名。 } //異步獲得xml後進行解析並將解析結果放入指定層的各個函數 function showGwgl(xmlNode){ var myxsl = new ActiveXObject("MSXML2.FreeThreadedDOMDocument"); myxsl.async = false; myxsl.load(basePath+"/xsl/rssGw.xsl"); //指定解析的xsl文件爲:rssGw.xsl lgwgl_swgl.innerHTML = unescape(xmlNode.transformNode(myxsl)); //指定解析結果顯示在lgwgl_swgl層 }
3> 控制層。被js中的doAjax調用的fileListAction中的getPageList方法。緩存
public ActionForward getPageList(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse resp) { List infoList = baseDAO.getList();//從持久層獲取數據 Xml xml = new Xml(); // 調用toXml_dbgz方法,將結果封裝爲xml文件 String strXml = xml.toXml_dbgz(infoList); resp.setContentType("text/xml;charset=GBK"); resp.getWriter().write(strXml); return null; } //封裝結果爲xml文件的方法 public String toXml_dbgz(List infoList){ StringBuffer xml = new StringBuffer(); xml.append("<?xml version=\"1.0\" encoding=\"GBK\"?>\n"); xml.append("<channel>\n"); if(infoList!=null){ long wfId = 0;//工做流ID long bus_Id = 0;//收文ID String title = "";//標題 ZybFilesForList file = null; for(int i=0;i<infoList.size();i++){ xml.append("<item>\n"); file= (ZybFilesForList)infoList.get(i); wfId = file.getEntryId().longValue();//工做流id bus_Id = file.getBus_Id();//收文id title = file.getTitle();//標題 if(WorkFlowTools.checkString(title)) xml.append("<title>"+toGeneralXmlStr(title)+"</title>\n"); else xml.append("<title>無標題</title>\n"); xml.append("<acceptDate>"+DateTools.getDaySimple(file.acceptDate)+"</acceptDate>\n"); xml.append("<titleLink>view("+wfId+","+bus_Id+")</titleLink>\n"); //定義一個連接,view爲js方法名,wfId和bus_Id爲參數 xml.append("<tableName>"+file.getTableName()+"</tableName>\n"); xml.append("<workType>"+file.getWorkType()+"</workType>\n"); xml.append("<workLink>viewInWF("+wfId+","+bus_Id+")</workLink>\n"); xml.append("</item>\n"); } }else{ ..... } }
4> xsl文件。js的showGwgl方法中指定的解析文件:rssGw.xslapp
<?xml version="1.0" encoding="gbk"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/channel"> <dl> <xsl:for-each select="item"> <dd> <xsl:if test="title!=''"> <xsl:if test="tableName='szs_sw'"><!-- 收文 --> <img src="/myDoSZS/images/firstpage/ico_b.gif" alt="收文" /> </xsl:if> <xsl:if test="tableName='szs_fw'"><!-- 發文 --> <img src="/myDoSZS/images/firstpage/ico_y.gif" alt="正式發文" /> </xsl:if> <xsl:if test="tableName='szs_qb'"><!-- 簽報 --> <img src="/myDoSZS/images/firstpage/ico_g.gif" alt="其餘發文" /> </xsl:if> </xsl:if> <a href="javascript:{titleLink}" title='{title}'> <xsl:value-of select="title"/> </a> </dd> <dt> <xsl:value-of select="acceptDate"/> <xsl:text>   </xsl:text> <!--  顯示爲空格 --> <xsl:if test="workType='0'"><!-- 簽收 --> <a href="javascript:{workLink}"> <xsl:text>簽收</xsl:text> </a> </xsl:if> <xsl:if test="workType='1'"><!-- 編輯 --> <a href="javascript:{workLink}"> <xsl:text>編輯</xsl:text> </a> </xsl:if> </dt> </xsl:for-each> </dl> </xsl:template> </xsl:stylesheet>