最近使用JAVA、MyEclipse、Weblogic来开发Web程序,使用JSCookMenu来定义项目中用到的menu。
当在WEB-INF文件夹下添加了weblogic.xml文件以后,一些属性发生了变化,如:
<
session-param
>
<
param-name
>
CookiesEnabled
</
param-name
>
<
param-value
>
false
</
param-value
>
</
session-param
>
<
session-param
>
<
param-name
>
CookieName
</
param-name
>
<
param-value
>
ims
sessionid
</
param-value
>
</
session-param
>
接下来出现的问题之一就是menu上面的图片无法正确显示。
接下来出现的问题之一就是menu上面的图片无法正确显示。通过使用Internet Explorer Developer Toolbar软件,
我找到了无法显示的图片的链接是:http://domain/Web/faces/myFacesExtensionResource/
org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader/12115203/
navmenu.jscookmenu.HtmlJSCookMenuRenderer/ThemeOffice/;imssesessionid=QzxsL2rS!1070634751spacer.gif
在tomahawk-1.1.5.jar包中可以找到这个文件:
org/apache/myfaces/custom/navmenu/jscookmenu/resource/ThemeIE/theme.js
在这个文件中使用如下方法来解析图片的路径:// sub menu display attributes if(cmThemeOfficeBase.indexOf("/;j")>-1){ myPrefix=cmThemeOfficeBase.substring(0,cmThemeOfficeBase.indexOf("/;j")) + "/"; mySuffix=cmThemeOfficeBase.substring(cmThemeOfficeBase.indexOf("/;j")+1);}
var myFolderLeft=myPrefix + 'spacer.gif' + mySuffix; var myFolderRight=myPrefix + 'arrow.gif' + mySuffix;
代码中查找/:j这个字符串来分开图片路径和sessionid,所以我们可以知道weblogic.xml文件中的CookieName是很重要的,必须以字母j开头。而正确的图片路径应该是: http://domain/Web/faces/myFacesExtensionResource/org.apache.myfaces.renderkit.html.util.MyFacesResourceLoader/12115455/navmenu.jscookmenu.HtmlJSCookMenuRenderer/ThemeOffice/spacer.gif;jimssesessionid=GknnL23T!-527814332 我们可以想象,CookieName以字母j开头是通用的方法,所以只要修改CookieName即可解决这个问题。