JSP和HTML在包含extj函数时定位不同引发的错误

3 篇文章 0 订阅

最近在学习Struts2.1.8

在一个项目里使用了ext3.2的according layout模板,项目结构如图1

然后再admin目录下的index.jsp中引入了ext函数,同时,admin目录下

还有一个index.html文件,功能完全一样,都是引入了一个ext模板。

index.jsp,index.html,struts.xml文件代码在下文,

然后问题出现了:

当我在浏览器中访问:

http://localhost:8080/Struts2_BBS_002/admin/index.html时,能正

确的打开action指定的页面。而访问:

http://localhost:8080/Struts2_BBS_002/admin/index.jsp时,

提示There is no Action mapped for namespace / and action name

Category_list. - [unknown location] 错误

我对比了index.jsp和index.html页面中的ext函数部分,完全相同,但

是问题依旧,感觉是因为jsp的头中有关于路径定位的标签,比如

basePath,具体原理就不知道了,希望前辈们指点……


index.jsp源代码:

<%@ page language="java" import="java.util.*"

pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme

()+"://"+request.getServerName()+":"+request.getServerPort

()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01

Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
 <title>Accordion Layout</title>
    <link rel="stylesheet" type="text/css"

href="admin/ext/resources/css/ext-all.css"/>

    <!-- GC -->
    <!-- LIBS -->
    <script type="text/javascript"

src="admin/ext/adapter/ext/ext-base.js"></script>
    <!-- ENDLIBS -->

    <script type="text/javascript" src="admin/ext/ext-

all.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!');
  var addPanel = function(btn, event) {
   var n;
   n = tabPanel.getComponent(btn.id);
   if(n) {
    tabPanel.setActiveTab(n);
    return;
   }
   n = tabPanel.add( {
    id : btn.id,
    title : btn.id,
    html : '<iframe width=100% height=100% src=' + btn.id + '

/>',
    //autoLoad : '',
    closable : 'true'
   });
   tabPanel.setActiveTab(n);
  }

  var item1 = new Ext.Panel( {
   title : 'Category管理',
   //html : '&lt;empty panel&gt;',
   cls : 'empty',
   items : [
    new Ext.Button({
     id : 'Category_list',
     text : 'Category列表',
     width : '100%',
     listeners : {
      click : addPanel
     }

    }),

    new Ext.Button({
     id : 'test',
     text : 'Test',
     width : '100%',
     listeners : {
      click : addPanel
     }

    })

    ]
  });

  var item2 = new Ext.Panel( {
   title : 'Accordion Item 2',
   html : '&lt;empty panel&gt;',
   cls : 'empty'
  });

  var item3 = new Ext.Panel( {
   title : 'Accordion Item 3',
   html : '&lt;empty panel&gt;',
   cls : 'empty'
  });

  var item4 = new Ext.Panel( {
   title : 'Accordion Item 4',
   html : '&lt;empty panel&gt;',
   cls : 'empty'
  });

  var item5 = new Ext.Panel( {
   title : 'Accordion Item 5',
   html : '&lt;empty panel&gt;',
   cls : 'empty'
  });

  var accordion = new Ext.Panel( {
   region : 'west',
   margins : '5 0 5 5',
   split : true,
   width : 210,
   layout : 'accordion',
   items : [ item1, item2, item3, item4, item5 ]
  });

  var tabPanel = new Ext.TabPanel( {
   region : 'center',
   enableTabScroll : true,
   deferredRender : false,
   activeTab : 0,
   items : [ {

    title : 'index',

    //html : 'aaaaaa'
    autoLoad : 'Category_add.jsp'
   } ]
  });

  var viewport = new Ext.Viewport( {
   layout : 'border',
   items : [ accordion, tabPanel ]
  });

 });
</script>
 </head>
 <body>
 
  <!-- EXAMPLES -->
 </body>
</html>

 

 

index.html源代码如下:


<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html;

charset=UTF-8" />
  <title>According Layout</title>
  <link rel="stylesheet" type="text/css"
   href="ext/resources/css/ext-all.css" />
  <!-- GC -->
  <!-- LIBS -->
  <script type="text/javascript" src="ext/adapter/ext/ext-

base.js">
 
</script>
  <!-- ENDLIBS -->
  <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!');
  var addPanel = function(btn, event) {
   var n;
   n = tabPanel.getComponent(btn.id);
   if(n) {
    tabPanel.setActiveTab(n);
    return;
   }
   n = tabPanel.add( {
    id : btn.id,
    title : btn.id,
    html : '<iframe width=100% height=100% src=' + btn.id + '

/>',
    //autoLoad : '',
    closable : 'true'
   });
   tabPanel.setActiveTab(n);
  }

  var item1 = new Ext.Panel( {
   title : 'Category管理',
   //html : '&lt;empty panel&gt;',
   cls : 'empty',
   items : [
    new Ext.Button({
     id : 'Category_list',
     text : 'Category列表',
     width : '100%',
     listeners : {
      click : addPanel
     }

    }),

    new Ext.Button({
     id : 'test',
     text : 'Test',
     width : '100%',
     listeners : {
      click : addPanel
     }

    })

    ]
  });

  var item2 = new Ext.Panel( {
   title : 'Accordion Item 2',
   html : '&lt;empty panel&gt;',
   cls : 'empty'
  });

  var item3 = new Ext.Panel( {
   title : 'Accordion Item 3',
   html : '&lt;empty panel&gt;',
   cls : 'empty'
  });

  var item4 = new Ext.Panel( {
   title : 'Accordion Item 4',
   html : '&lt;empty panel&gt;',
   cls : 'empty'
  });

  var item5 = new Ext.Panel( {
   title : 'Accordion Item 5',
   html : '&lt;empty panel&gt;',
   cls : 'empty'
  });

  var accordion = new Ext.Panel( {
   region : 'west',
   margins : '5 0 5 5',
   split : true,
   width : 210,
   layout : 'accordion',
   items : [ item1, item2, item3, item4, item5 ]
  });

  var tabPanel = new Ext.TabPanel( {
   region : 'center',
   enableTabScroll : true,
   deferredRender : false,
   activeTab : 0,
   items : [ {

    title : 'index',

    //html : 'aaaaaa'
    autoLoad : 'Category_add.jsp'
   } ]
  });

  var viewport = new Ext.Viewport( {
   layout : 'border',
   items : [ accordion, tabPanel ]
  });

 });
</script>
 </head>
 <body>
 
  <!-- EXAMPLES -->
 </body>
</html>

 

struts.xml如下:


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration

2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
 <!--

  <constant name="struts.enable.DynamicMethodInvocation"

value="false"
  /> <constant name="struts.devMode" value="false" /> <include
  file="example.xml"/> <package name="default" namespace="/"
  extends="struts-default"> <default-action-ref name="index"

/> <action
  name="index"> <result type="redirectAction"> <param
  name="actionName">HelloWorld</param> <param
  name="namespace">/example</param> </result> </action>

</package>
 --><!-- Add packages here -->

 <constant name="struts.devMode" value="true" />

 


 <package name="admin" namespace="/admin" extends="struts-

default">

  <action name="index" >
   <result>/admin/index.jsp</result>
  </action>
 
 
  <action name="*_*" class="com.avin.bbs.action.{1}Action"
   method="{2}">


   <result>/admin/{1}_{2}.jsp</result>
   <result name="input">/admin/{1}_{2}.jsp</result>
  </action>
 </package>
 
 <package name="front" namespace="/" extends="struts-default">
  <action name="CategoryAction"

class="com.avin.bbs.action.CategoryAction"
   method="list">


   <result>/index.jsp</result>
  </action>
 </package>
</struts>


 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值