首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dojo和portlet客户端模型

Dojo和portlet客户端模型
EN

Stack Overflow用户
提问于 2015-03-02 16:30:51
回答 1查看 498关注 0票数 0

我在WebSphere 8 portlet中使用Dojo1.9.1AMD,并且无法弄清楚如何继续利用WebSphere机制来获取/设置用户的portlet首选项。在从前AMD Dojo (1.6)迁移到Dojo 1.9.1 AMD之前,我在一些JSP文件的顶部包括了以下几行:

<%@ taglib uri="http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portlet-client-model“prefix=”portlet-client模型“”%>

它们在运行时被转换/生成到这些行:

代码语言:javascript
复制
<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:--portletwindowid--@oid: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首选项。当我尝试在Dojo1.9.1AMD中使用同样的技术时,上面生成的相同代码会导致javascript错误,抱怨"dojo.require“不是函数。

使用改进的Dojo,我不再像以前那样调用"dojo.require“,因此我没有遇到这个问题,但是这些WebSphere自定义标记会自动生成"dojo.require”调用,而这些调用现在正在失败。

我是否需要尝试将dojo.js的旧的前AMD包含与首选的AMD包含调用混合?有人遇到过这个问题吗?

任何帮助都是非常感谢的。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-03-06 08:29:25

您的主要问题是使用了一个旧的taglib。如果查看URL,就会发现您使用的是v6.1标记库,它使用的是Dojo 1.4.3,显然已经过时了。尝试将taglib替换为:

代码语言:javascript
复制
<%@ taglib 
  uri="http://www.ibm.com/xmlns/prod/websphere/portal/v8.0/portlet-client-model"
  prefix="portlet-client-model" %>

我认为这应该会生成一些与最新版本兼容的更合适的代码。您可能还需要更新类路径上的一些库。

另外,如果您使用的是WebSphere Portal 8,那么只有Dojo1.7是官方支持的,所以请确保这里没有使用不同的版本。DojoPortal8.5支持Dojo1.9(确切地使用1.9.3 ),但从您的问题来看,不清楚您使用的是v8还是v8.5。

如果您想更改Dojo配置并设置async: false,这是可能的,但是您必须在加载 dojo.js之前将其设置为dojo.js。这意味着您必须编辑theme.html和本地化主题(例如,要在co:head动态内容点之上添加以下内容:

代码语言:javascript
复制
<script type="text/javascript">
    dojoConfig = {
      async: false
    };
</script>
<link rel="dynamic-content" href="co:head">

但是要小心,如果您设置它,您可能会破坏某些东西,我不知道IBM是否有自己的配置,其中包括自定义包,但如果它们包含自定义包,并且您正在覆盖该配置,那么它可能会导致错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28814770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档