问题描述
见图一,我用action跳转到index.html,跳转action如下:<package name="front" namespace="/" extends="struts-default" > <action name="Category_list" class="com.strutsextjs.bbs.action.CategoryAction"> <result>admin/index.html</result> </action></package>该html如下:<html><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030" /><title>北京尚学堂BBS2009论坛管理平台</title><link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" /><script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script><script type="text/javascript" src="ext/ext-all.js"></script><script type="text/javascript" src="ext/ext-lang-zh_CN.js"></script><style type="text/css">html,body {font: normal 12px verdana;margin: 0;padding: 0;border: 0 none;overflow: hidden;height: 100%;}.empty .x-panel-body {padding-top: 0;text-align: center;font-style: italic;color: gray;font-size: 11px;}.x-btn button {font-size: 14px;}.x-panel-header {font-size: 14px;}</style><script type="text/javascript">Ext.onReady( function() {Ext.Msg.alert('ext','welcome you!'); ......---->省略});</script></head><body></body></html>我在body中加入字符串"dddd",然后浏览器地址输入http://localhost:8080/struts2_3000_BBS2009_01/Category_list,发现body部分的确出现了ddd,也就是说页面访问到了,且并没有执行extJS部分内容。另外我在浏览器中输入http://localhost:8080/struts2_3000_BBS2009_01/admin/index.html,居然就能够显示出页面内容了,说明extJS起作用了。我怀疑是通过struts来访问该页面时调用extJS的库文件出了问题。但是具体怎么解决实在是不清楚了!小弟刚学这个,不知道谁能指导下,谢谢!
解决方案
这个无关Extjs,而是你的html页面引用js文件方式的问题。 <script type="text/javascript" src="ext/ext-all.js"></script>这句里面的src="ext/ext-all.js" 在你直接输入html的地址和通过action跳转二者的结果是截然不同的!当你输入.../admin/index.html时,载入的js的路径是"...struts2_3000_BBS2009_01/admin/ext/ext-all.js", 当你使用action跳转的时候,action的路径是“...struts2_3000_BBS2009_01/Category_list.do”,这时候载入js的路径会是"...struts2_3000_BBS2009_01/ext/ext-all.js",明显两种情况路径不一样。后者的路径是错误的。这里建议吧html改成jsp,然后用struts标签来引入各种资源文件。