Failed to load resource: the server responded with a status of 404

搞来搞去附件下载请求的地址老包404,我用的easyui1.5   引用下载插件


注意后期版本有所改动,没了

 success: function(data, status)  //服务器成功响应处理函数
                            {
                                $.messager.progress("close");
                                $('#uploadDiv').dialog('close');
                                $.messager.alert("提示",data.msg);
                              //  $('#tt').treegrid('reload');
                            },
                            error: function (data, status, e)//服务器响应失败处理函数
                            {
                                $.messager.progress("close");
                                $('#uploadDiv').dialog('close');
                                $.messager.alert("错误",e);
                            }
                        }

只需要在Jquery.js添加上


  1.  jQuery.extend({  
  2.                 handleError: function (s, xhr, status, e) {  
  3.                     if (s.error) {  
  4.                         s.error.call(s.context || s, xhr, status, e);  
  5.                     }  
  6.                     if (s.global) {  
  7.                         (s.context ? jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]);  
  8.                     }  
  9.                 },  
  10.                 httpData: function (xhr, type, s) {  
  11.                     var ct = xhr.getResponseHeader("content-type"),  
  12.             xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,  
  13.             data = xml ? xhr.responseXML : xhr.responseText;  
  14.                     if (xml && data.documentElement.tagName == "parsererror")  
  15.                         throw "parsererror";  
  16.                     if (s && s.dataFilter)  
  17.                         data = s.dataFilter(data, type);  
  18.                     if (typeof data === "string") {  
  19.                         if (type == "script")  
  20.                             jQuery.globalEval(data);  
  21.                         if (type == "json")  
  22.                             data = window["eval"]("(" + data + ")");  
  23.                     }  
  24.                     return data;  
  25.                 }  
  26.             })  

使用Convention插件,你需要将其JAR文件放到你应用的WEB-INF/lib目录中

配置例子:

struts.convention.default.parent.package" value="crud-default" />
?struts.convention.package.locators" value="web,action" />
?struts.convention.package.locators.basePackage" value="com.cngba.gamemag" /> 
struts.convention.result.path" value="/WEB-INF/pages" />
struts.convention.action.name.separator" value="-" />

1. 默认所有的结果页面都存储在WEB-INF/content下,你可以通过设置struts.convention.result.path这个属性的值来改变到其他路径。如:
Xml代码
struts.convention.result.path" value="/WEB-INF/page" />
则将路径配置到了WEB-INF/page 下。
2. 默认包路径包含action,actions,struts,struts2的所有包都会被struts作为含有Action类的路径来搜索。你可以通过设置struts.convention.package.locators属性来修改这个配置。如:
struts.convention.package.locators" value="web,action" />

3. 接着,Convention从前一步找到的package以及其子package中寻找 com.opensymphony.xwork2.Action 的实现以及以Action结尾的类:
Java代码
com.example.actions.MainAction
com.example.actions.products.Display (implements com.opensymphony.xwork2.Action)
com.example.struts.company.details.ShowCompanyDetailsAction
4. 命名空间。从定义的.package.locators标示开始到包结束的部分,就是命名空间。举个例子:
Com.ustb.web.user.userAction的命名空间是:”/user”。Com.ustb.web.user.detail.UserAction的命名空间是:”/user/detail”

5. Convention通过如下规则确定URL的具体资源部分:去掉类名的Action部分。然后将将每个分部的首字母转为小写,用’-’分割,你可以设置struts.convention.action.name.separator 如

Xml代码
struts.convention.action.name.separator" value="-" />
还是举个例子:
UserAction->user UserDetailAction ->user-detail。结合上面的。对于com.ustb.web.user.detail.UserDetailAction,映射的url就是/WEB-INF/content/user/detail/user-detail.jsp

当然,简单的通过默认的方式来进行配置不能完全满足实际项目的需要。所幸,convention的零配置是非常灵活的。

通过@Action注释
对如下例子:

Java代码
package com.example.web;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport {
@Action("action1")
public String method1() {
return SUCCESS;
}
@Action("/user/action2")
public String method2() {
return SUCCESS;
}
}

方法名  默认调用路径  默认映射路径
method1  /hello!method1.action .  /WEB-INF/content/hello.jsp
method2  /hello!method2.action.  /WEB-INF/content/hello.jsp

通过@Action注释后

方法名  @Action注释后调用路径  @Action注释 后映射路径
method1  /action1!method1.action.  /WEB-INF/content/action1.jsp
method1  /user/action2!method2.action  /WEB-INF/content/user/action2.jsp


404搞来搞去原来是只声明命名空间的情况下,请求指定类的方法的时候需要满足

fiscal/fiscal-message!fiscal.action      ------------------------------@Namespace("/fiscal")   类是  FiscalMessageAction      方法是 pubic void fiscal()

由于未对方法加action注解类要必须按着这种规范。

我的理解是这样的,不对请指出。

你可能感兴趣的:(学习)