Code Bye

EXTJS jsonstore指定的url直接报了302 found

没有用过extjs,模仿着写了一个页面,可是用firebug来跟踪,jsonstore指定的url直接报了302 found.
var listStore = new Ext.data.JsonStore({
fields : [“”id””,””countryCode””,””countryName””,””countryStatus””],
autoLoad : true,
totalProperty : “”count””,
root : “”rows””,
url : “”stock/stockBase!datagridCountry.action””
});
我只是将要显示的部分、后台url之类的改掉了,在后台方法上打上断点,根本没有进入。如果我把url名称改错了,eclipse会报错:没有该方法!

 
在别的模块打上断点,可以进入的,只有这个不行。
后台代码:public void datagridCountry() {
try {
writeJson(stockBaseService.datagridCountry(getStart(), getLimit(),
getSort(), getDir(), stockBase.getStockGoodsCountry()));
} catch (Exception e) {
log.error(“datagridCountry”, e);
}
}
structs中也有定义:<action name=”stockBase!*” class=”stockBaseAction” method=”{1}”>
</action>

40分

后台没进去???
 
感觉应该是进去了,但302跳转了。因为如果是没进去后台的话,我把action写错了的话,这个时候eclipse会报错,找不到函数。而现在没有报错
 

感觉应该是进去了,但302跳转了。因为如果是没进去后台的话,我把action写错了的话,这个时候eclipse会报错,找不到函数。而现在没有报错 。但在后台打上断点,又不会进入,不清楚是什么个情况了

 
打在他基类上面, 调试看看,
 

public class BaseAction extends ActionSupport{

private static final Logger log = Logger.getLogger(BaseAction.class);
private int start = 0;// 当前页
private int limit = 10;// 每页显示记录数
private String sort;//排序列
private String dir;//asc desc

public String getSort() {
return sort;
}

public void setSort(String sort) {
this.sort = sort;
}

public String getDir() {
return dir;
}

public void setDir(String dir) {
this.dir = dir;
}

public int getStart() {
return start;
}

public void setStart(int start) {
this.start = start;
}

public int getLimit() {
return limit;
}

public void setLimit(int limit) {
this.limit = limit;
}

/**
* 将对象转换成JSON字符串,并响应回前台
*
* @param object
* @throws IOException
*/
public void writeJson(Object object) {
try {
// SerializeConfig serializeConfig = new SerializeConfig();
// serializeConfig.setAsmEnable(false);
String json = JSON.toJSONString(object,SerializerFeature.DisableCircularReferenceDetect);
// String json = JSON.toJSONString(object, serializeConfig, SerializerFeature.PrettyFormat);
//String json = JSON.toJSONStringWithDateFormat(object, “yyyy-MM-dd HH:mm:ss”);
// String json = JSON.toJSONStringWithDateFormat(object, “yyyy-MM-dd HH:mm:ss”, SerializerFeature.PrettyFormat);
ServletActionContext.getResponse().setContentType(“text/html;charset=utf-8”);
ServletActionContext.getResponse().getWriter().write(json);
ServletActionContext.getResponse().getWriter().flush();
} catch (IOException e) {
log.error(e);
}
}

public void writeJsonFormatTimespan(Object object) {
try {
//SerializeConfig serializeConfig = new SerializeConfig();
//serializeConfig.setAsmEnable(false);
//String json = JSON.toJSONString(object,SerializerFeature.DisableCircularReferenceDetect);
// String json = JSON.toJSONString(object, serializeConfig, SerializerFeature.PrettyFormat);
String json = JSON.toJSONStringWithDateFormat(object, “yyyy-MM-dd HH:mm:ss”);
// String json = JSON.toJSONStringWithDateFormat(object, “yyyy-MM-dd HH:mm:ss”, SerializerFeature.PrettyFormat);
ServletActionContext.getResponse().setContentType(“text/html;charset=utf-8”);
ServletActionContext.getResponse().getWriter().write(json);
ServletActionContext.getResponse().getWriter().flush();
} catch (IOException e) {
log.error(e);
}
}

}
这个是它的基类,里面没有定义构造函数,打在writeJson这个函数上面吗?

 
name=”stockBase!*” class=”stockBaseAction”

你现判断到底什么原因。 action 的名称对不? class 的路径对不。

或者你 name 写个简单的 xxx clsss 路径写全了再试试。

现在怀疑你的action 对应 class 没有找到。 stockBase!* 这种 ! 加* 的写法不知道支持不

 

这会产品的人在测之前添加的功能,晚点在基类上打个断点试一下

 

action的名称是对的,如果不对的话,eclipse会报错,这个我试过了。而且这个是在别人的基础上做的开发,完全模拟别人的代码来实现的,应该不是action找不到的问题,因为其它的也是这么写的,而且是ok的。我只能怀疑有哪块少配置了,可我又不熟悉这框架,所以悲剧了。

 
那么先确认看看action 对应的class 进去没。ActionSupport 再进去看看。
 

action对应的class没有进去,actionSupport是在导入的jar包中吧,没有源码

 
问题解决了,是整体框架设计没搞清楚,之前设计者将所有的功能menu都放入了表中,每执行一次操作时,过滤器会从表中取出这个menu对应的action,作为权限判断,过滤不通过,所以进行了302跳转

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明EXTJS jsonstore指定的url直接报了302 found