@Override
public class ShopAction extends ActionSupport {
public String execute(){
try {
shopService.addShop(shop);
return result = SUCCESS;
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.toString());
}
return result = SUCCESS;
}
public String showShop() throws Exception{
shop = shopService.getShopDAO().findById(shopId);
return SUCCESS;
}
public String getShopList(){
if (page == null) {
System.out.println("page is null!!!!!!");
return ERROR;
}
if(shop == null){
System.out.println("shop is null");
}
page = shopService.getShopDAO().getShopListByTags(shop.getType(), shop.getArea(), page);
return SUCCESS;
}
}
struts.xml<package name="ajax" namespace="/" extends="json-default">
<interceptors>
<interceptor-stack name="myJson">
<interceptor-ref name="json"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myJson"/>
<action name="addShop" class="ShopAction">
<result type="json"></result>
</action>
</package>$(document).ready(function(){
$('#submit').click(function(){
var params = {
'shop':{
'name':'噶',
'address':'haha',
'area':'haha',
'type':'haha',
'briIntro':'ahha',
'phone':'027-12345678'
}
};
params = JSON.stringify(params);
submit(params);
});
});function submit(params){
$.ajax({
type:"post",
dataType:"text",
data:params,
url:"addShop.action",
contentType:"application/json",
success:function(json){
alert(json);
var obj = $.parseJSON(json);
var result = obj.result;
alert(result);
},
error:function(){
alert("error");
}
});
}
js提交ajax请求到后台之后
控制台输出这样的结果:
page is null!!!!!!很明显服务端在执行execute()之后又执行了getShopList()
为什么会这样?怎么样才能让他不执行getShopList()AjaxStrutsJSON
解决方案 »
- 定时器 销毁session non-serializable app specific session data : {} serializable app
- 这个是什么错误 mysql tomcat 开网站报错
- 用会话返回实体的异常
- struts2.1 使用 convention plugin 时配置拦截器问题
- 用servlet+jsp,实现把数据库的数据输出到jsp页面
- 向oracle数据库插入一篇大约3000汉字的文章时报错,求解答!!!
- 从网上找了一个Struts分页的例子,但是运行出错“javax.servlet.jsp.JspException: No bean found under attribute key page”
- 谁能给详细介绍一下java.util.Hashtable这个类和具体用法吗?谢谢
- 采鸟求救,问java的开发环境。
- 我听说SUN有一个COM访问EJB的组件CAS可是我在SUN的网站上怎么都找不到呢?郁闷
- 关于stringbuilder 问题
- 分享一点个人关于Ioc容器实现的探讨!渴望得到大家的指点!真诚感谢!
可以在点击提交的时候,配置你要访问哪个方法。
因为result是我要返回到ajax的属性,
其实是这样
result = SUCCESS;
return SUCCESS;我已近在struts.xml里面配置了啊,默认访问的是execute()方法啊
在struts.xml里面我们配置了<action name="addShop" class="ShopAction">
<result type="json"></result>
</action>所以在执行action之后struts会对action中的属性进行序列化,返回json
这个序列话是默认对所有get方法进行执行,所以我的getShopList方法会在最后的时候被执行解决方案有两个,一个是命名方法的时候尽量避免使用get开头
第二个是在struts.xml中给result中加一个includeProperties属性,使得struts只序列化你执行的属性,只执行对应属性的get方法,例如我的配置是<action name="addShop" class="ShopAction">
<result type="json">
<param name="includeProperties>result</param>
</result>
</action>
你那个struts-xml配置package不是extends了json-default嘛为嘛还要指定调用json拦截器呢,直接就可以用了嘛,json-default不是去extends了default-stack,难道你的jar包有点变态