首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

struts2 调整 jsonplugin

2012-10-13 
struts2 整合 jsonpluginstruts2-core-2.18和struts2-core-2.16整合jsonplugin 是不一样的?一、用struts2-c

struts2 整合 jsonplugin

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)方法

热点排行
Bad Request.