`
chenyu.hz
  • 浏览: 138000 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

struts2 整合 jsonplugin

    博客分类:
  • J2EE
阅读更多

struts2-core-2.18和struts2-core-2.16整合jsonplugin 是不一样的

 

一、用struts2-core-2.16话需要依赖包为:

      json-lib2.1.jar
      json-plugin-0.33.jar
      ezmorph-1.0.3.jar
      commons-beanutils-1.7.0.jar或1.8

 

        如果少包,则会报错:

java.lang.NoSuchMethodError: com.opensymphony.xwork2.ActionContext.get(Ljava/lang/Object;)Ljava/lang/Object;
at com.googlecode.jsonplugin.JSONResult.execute(JSONResult.java:153)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:361)

 

二、用struts2-core-2.18,因为2.18比2.16少打包一个com.opensymphony.xwork2.util.TextUtils.class文件会导致,整合出错,会报错:找不到TextUtils.class,所以需要自己打包一个含TextUtils.class的包

 

       json-lib2.1.jar
      json-plugin-0.33.jar
      ezmorph-1.0.3.jar
      commons-beanutils-1.7.0.jar或1.8

      textUtils.jar

 

三、一般的整合方法是,自己建一个dto

 
import java.io.Serializable;

/**
 * 返回给浏览器的对象,包含此次操作的状态和数据
 * 
 *  
 * 
 */
public class JsonResult implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 操作是否成功
	 */
	private Boolean success;

	/**
	 * 操作的信息
	 */
	private String message;
	/**
	 * 返回的数据
	 */
	private Object data;

	/**
	 * @return 操作是否成功
	 */
	public Boolean getSuccess() {
		return success;
	}

	/**
	 * @param success
	 *            操作是否成功
	 */
	public void setSuccess(Boolean success) {
		this.success = success;
	}

	/**
	 * @return 操作的信息
	 */
	public String getMessage() {
		return message;
	}

	/**
	 * @param message
	 *            操作的信息
	 */
	public void setMessage(String message) {
		this.message = message;
	}

	/**
	 * @return 返回的数据
	 */
	public Object getData() {
		return data;
	}

	/**
	 * @param data
	 *            返回的数据
	 */
	public void setData(Object data) {
		this.data = data;
	}

	/**
	 * 
	 * 
	 * @param success
	 *            操作是否成功
	 * @param message
	 *            操作的信息
	 * @param data
	 *            返回的数据
	 * @author Panxiaobo
	 * 
	 */
	public JsonResult(Boolean success, String message, Object data) {
		super();
		this.success = success;
		this.message = message;
		this.data = data;
	}

	/**
	 * 直接调用this(success, message, null);
	 * 
	 * @param success
	 *            操作是否成功
	 * @param message
	 *            操作的信息
	 * 
	 * @see #JsonResult(Boolean, String, Object)
	 */
	public JsonResult(Boolean success, String message) {
		this(success, message, null);
	}
}

 

然后在struts.xml 中配置

 

<global-results>
   <result name="json" type="json">
    <param name="root">result</param>
    <param name="ignoreHierarchy">false</param>
    <param name="noCache">true</param>
   </result>

  </global-results>

 

或者在action中配置如:

 

/**
 * Struts2 Action基类.支持json格式的返回
 * 
 *      
 */

@SuppressWarnings( { "serial" })
@Result(name = "json", type = "json", params = { "root", "result" })
public abstract class SimpleActionSupport extends ActionSupport {

	protected final Logger logger = LoggerFactory.getLogger(getClass());

	public static final String JSON = "json";

	 	/**
	 * 
	 * 返回成功信息
	 * 
	 * @param message
	 *            信息
	 * @return SUCCESS
	 *  
	 */
	protected String success(String message) {
		result = new JsonResult(Boolean.TRUE, message);
		return JSON;
	}

	/**
	 * Json的Root
	 * 
	 * @return 返回给浏览器的json对象
	 */
	public JsonResult getResult() {
		return result;
	}

	/**
	 * 
	 * 返回失败信息
	 * 
	 * @param message
	 *            信息
	 * @return SUCCESS
	 *  
	 */
	protected String fail(String message) {
		result = new JsonResult(Boolean.FALSE, message);
		return JSON;
	}

	/**
	 * 返回给浏览器的json对象
	 */
	protected JsonResult result;

	/**
	 * 
	 * 返回成功信息和数据
	 * 
	 * @param message
	 *            信息
	 * @param data
	 *            数据
	 * @return SUCCESS
	 *  
	 */
	protected String success(String message, Object data) {
		result = new JsonResult(Boolean.TRUE, message, data);
		return JSON;
	}
}

 

分享到:
评论
1 楼 pxb1988 2010-08-26  
java.lang.NoSuchMethodError: com.opensymphony.xwork2.ActionContext.get(Ljava/lang/Object;)Ljava/lang/Object;

是因为struts2-core-2.16中ActionContext类没有Object get(Object arg)方法

相关推荐

Global site tag (gtag.js) - Google Analytics