本文主要是介绍Failed to load resource: the server responded with a status of 404,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
搞来搞去附件下载请求的地址老包404,我用的easyui1.5 引用下载插件
<script type="text/javascript" src="${ctx}/js/fileUploadOver.js"></script>
注意后期版本有所改动,没了
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添加上
- jQuery.extend({
- handleError: function (s, xhr, status, e) {
- if (s.error) {
- s.error.call(s.context || s, xhr, status, e);
- }
- if (s.global) {
- (s.context ? jQuery(s.context) : jQuery.event).trigger("ajaxError", [xhr, s, e]);
- }
- },
- httpData: function (xhr, type, s) {
- var ct = xhr.getResponseHeader("content-type"),
- xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
- data = xml ? xhr.responseXML : xhr.responseText;
- if (xml && data.documentElement.tagName == "parsererror")
- throw "parsererror";
- if (s && s.dataFilter)
- data = s.dataFilter(data, type);
- if (typeof data === "string") {
- if (type == "script")
- jQuery.globalEval(data);
- if (type == "json")
- data = window["eval"]("(" + data + ")");
- }
- return data;
- }
- })
使用Convention插件,你需要将其JAR文件放到你应用的WEB-INF/lib目录中
配置例子:
<constant name="struts.convention.default.parent.package" value="crud-default" />
?<constant name="struts.convention.package.locators" value="web,action" />
?<constant name="struts.convention.package.locators.basePackage" value="com.cngba.gamemag" />
<constant name="struts.convention.result.path" value="/WEB-INF/pages" />
<constant name="struts.convention.action.name.separator" value="-" />
1. 默认所有的结果页面都存储在WEB-INF/content下,你可以通过设置struts.convention.result.path这个属性的值来改变到其他路径。如:
Xml代码
<constant name="struts.convention.result.path" value="/WEB-INF/page" />
则将路径配置到了WEB-INF/page 下。
2. 默认包路径包含action,actions,struts,struts2的所有包都会被struts作为含有Action类的路径来搜索。你可以通过设置struts.convention.package.locators属性来修改这个配置。如:
<constant name="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代码
<constant name="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注解类要必须按着这种规范。
我的理解是这样的,不对请指出。
这篇关于Failed to load resource: the server responded with a status of 404的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!