json取得后台值的方法
xml的写法:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts SYSTEM "http://struts.apache.org/dtds/struts-2.0.dtd" PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"> -<struts>
<constant value="true" name="struts.devMode"/>-
<package name="basicstruts2" extends="struts-default">
-<action name="index"><result>/index.jsp</result></action>
-<action name="test"><result name="success">/index.jsp</result></action>
<!-- 表单重复提交 --> -
<action name="token" class="cn.itcast.struts2.TokenAction">
<result name="success">/index.jsp</result>
<result name="invalid.token">/token_error.jsp</result>
<!-- 重新定义拦截器 -->
<interceptor-ref name="defaultStack"/>
<!-- 在 struts-default.xml中定义的默认拦截器栈-->
<interceptor-ref name="token"/>
</action>
</package>
<!-- 要点一: Action 的package 必须继承 json-default 包 -->
-<package name="myjson" extends="json-default">
-<action name="checkUserName" class="cn.itcast.struts2.CheckUserNameAction">
<!-- 要点二 :结果集类型 必须指定为 json -->
<!-- 默认将值栈顶端对象返回,如果没有实现ModelDriven ,Action就是顶端对象 -->
<result type="json"/>
</action>-
<action name="productlist" class="cn.itcast.struts2.ProductListAction">-
<result type="json">
当结果类型为json时,不用配结果页面,,因为数据肯定是回到原来提交的页面 如果设置root属性,修改返回根对象 指定action作为根对象
<param name="root">action</param>//注意,默认是返回栈顶的对象,栈顶是ModelDriven里的东西,如果只想要action里的东西,就要配这个。
只想要 商品的name属性 和price属性
<param name="includeProperties">products\[\d+\]\.name,products\[\d+\]\.price</param>
</result>
</action>
</package>
</struts>
action的写法:
package cn.itcast.struts2;
import java.util.ArrayList; import java.util.List;
import org.apache.struts2.json.annotations.JSON;
import cn.itcast.domain.Product;
import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven;
/** * 获得商品列表 * * @author seawind * */
public class ProductListAction extends ActionSupport implements ModelDriven<Product> {
private Product product = new Product();
//设置了这个注解,product就不会还回到ajax的回调函数里面
@JSON(serialize = false)
public Product getModel() {
return product;
}
public String execute() throws Exception {
products = new ArrayList<Product>();
products.add(new Product("冰箱", 1000, 50));
products.add(new Product("洗衣机", 1500, 100)); return SUCCESS; }
private List<Product> products;
public List<Product> getProducts() {
return products;
}
}
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号