我正在使用带有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