最近使用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>imssessionid</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即可解决这个问题。
发表于 @ 2008年06月11日 13:51:00|评论(loading...)|收藏