??? 今天在編寫(xiě)Jetspeed2的ajax portlet過(guò)程中進(jìn)一步了解到了Jetspeed2中的一些機(jī)制:
??? 1、j2是用psml文件中的fragment id來(lái)區(qū)分的。因?yàn)閖2之中有緩存,當(dāng)psml頁(yè)面加載后,已經(jīng)用過(guò)的id是不會(huì)另外指向其他的portlet類的,若要改變指向只能服務(wù)器重啟。同一個(gè)頁(yè)面之中id相同的portlet,會(huì)隨著其他portlet狀態(tài)的改變而變。
??? 2、<portlet:namespace>標(biāo)簽。這個(gè)標(biāo)簽產(chǎn)生一個(gè)目前portlet 中唯一的數(shù)值。這個(gè)標(biāo)簽應(yīng)該被
named elements 使用在 portlet 的輸出,例如
javascript 的功能或變量。而
namespacing 就是確認(rèn)給定的名稱是這個(gè)
portlet 唯一的值,是避免名稱重復(fù)影響了其他
portal 的 element 以及這一頁(yè)的其他
portlets。
在jsp頁(yè)面中<portlet:namespace>與psml文件中fragment有著緊密的聯(lián)系如:在頁(yè)面中取得的js_simplest_15_?? 就對(duì)應(yīng)了? psml之中id為simplest-15的portlet。
??? 3、對(duì)于ajax部分,如果直接用XMLhttp的類在jsp頁(yè)面之中寫(xiě)ajax,是不能夠用session來(lái)傳遞數(shù)據(jù)的,因?yàn)橐粋€(gè)session對(duì)于當(dāng)前頁(yè)面只能夠傳遞一次數(shù)據(jù),這點(diǎn)不滿足不刷新的要求,我們需要另外編輯一個(gè)servlet的類,將字符串之類的數(shù)據(jù)寫(xiě)到presponse之中,然后對(duì)于頁(yè)面這塊的代碼可以直接用document.createTextNode(xmlhttp.responseText);這個(gè)javascript代碼寫(xiě)入了。這樣就可以實(shí)現(xiàn)最簡(jiǎn)單的ajax應(yīng)用了。