我正在使用帶有WebSphere 8 portlet的Dojo 1.9.1 AMD,但無法弄清楚如何繼續利用WebSphere機制獲取/設置用戶的portlet首選項。之前由預AMD道場(1.6)移動到道場1.9.1 AMD,我被包括一些JSP的頂部文件這些行:Dojo AMD和portlet客戶端模型
<%@ taglib uri="http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portlet-client-model" prefix="portlet-client-model" %> <portlet:defineObjects/> <portlet-client-model:init> <portlet-client-model:require module="ibm.portal.xml.*"/> <portlet-client-model:require module="ibm.portal.portlet.*"/> </portlet-client-model:init>
其中獲得轉換後的/生成到這些線在運行時:
<script> if(typeof dojo=='undefined') {
document.writeln("<scr"+"ipt src='/wps/portal_dojo/v1.4.3/dojo/dojo.js' ></scr"+"ipt>");
} </script>
<script>dojo.require('ibm.portal.xml.xpath'); dojo.require('ibm.portal.xml.xslt');</script>
<script>dojo.require('ibm.portal.portlet.portlet');</script>
<script>if(typeof(ibmPortalConfig) == "undefined") {ibmPortalConfig = {contentHandlerURI: "/wps/mycontenthandler/urs/!ut/p/digest!q8eCn6qc7fl2VjdmXXlayA/nm/oid:wps.portal.root"};} else if(!ibmPortalConfig["contentHandlerURI"]) {ibmPortalConfig["contentHandlerURI"] = "/wps/mycontenthandler/urs/!ut/p/digest!q8eCn6qc7fl2VjdmXXlayA/nm/oid:wps.portal.root";} </script><div id='com.ibm.wps.web2.portlet.root.Z7_HHGGGIO0JGPN00AI72U5E530O2' style='display: none;'>/wps/mycontenthandler/urs/!ut/p/digest!q8eCn6qc7fl2VjdmXXlayA/pm/oid:[email protected]:Z6_HHGGGIO0JGPN00AI72U5E530G4</div>
<div id='com.ibm.wps.web2.portlet.preferences.Z7_HHGGGIO0JGPN00AI72U5E530O2' style='display: none;' pageid='Z6_HHGGGIO0JGPN00AI72U5E530G4' configid='Z3_HHGGGIO0JGPN00AI72U5E53085' editdefaultsid='Z5_HHGGGIO0JGPN00AI72U5E530O6'
></div>
<div id='com.ibm.wps.web2.portlet.user.Z7_HHGGGIO0JGPN00AI72U5E530O2' style='display: none;'>/wps/mycontenthandler/urs/!ut/p/digest!q8eCn6qc7fl2VjdmXXlayA/um/secure/currentuser/profile?expandRefs=true</div>
然後,它允許我使用JavaScript獲取和設置用戶portlet首選項。當我嘗試在Dojo 1.9.1 AMD中使用相同的技術時,上面生成的相同代碼會導致出現javascript錯誤,抱怨「dojo.require」不是函數。通過改進的Dojo AMD,我不再像以前那樣對「dojo.require」進行任何調用,所以我沒有遇到這個問題,但是這些WebSphere定製標記自動生成「dojo.require」調用,它們會自動生成「dojo.require」調用現在失敗了。
我是否需要嘗試將舊的AMD之前的dojo.js包含在首選的AMD包含調用中?有沒有人遇到過這個問題呢?
任何幫助表示讚賞。謝謝。
在dojo AMD中,您只需要使用'require()'函數而不是'dojo.require'。所以你的WebSphere應該生成'require(['ibm.portal.xml.xpath'])''。現在Websphere如何生成我不知道的代碼。 – frank 2015-03-02 17:08:12
感謝您的幫助。我一直在尋找任何可以生成AMD語法但尚未發現任何更新的WebSphere定製標記。 – okorng 2015-03-02 17:11:38
經過更多搜索,我發現了一個類似的問題,在這裏http://stackoverflow.com/questions/19054350/how-to-include-legacy-module-in-dojo-amd提供了一個可能適用於我的答案。我將在加載器中將async:true更改爲async:false,這將允許舊語法和新語法都起作用。將盡快報告。 – okorng 2015-03-03 13:56:59