struts2

本想做个简单的struts2 -ajax 只helloworld的,不想折腾了n个小时,愣是出不来结果,错误提示说 没有定义success的返回结果   (大意如此),代码全部都是从官方demo抄的啊,我郁闷

先看配置 struts.xml
<package name="json" extends="json-default">
		<action name="login" class="org.office101.action.LoginAction">
			<result type="json">
				<param name="noCache">true</param>
				<param name="contentType">text/html</param>
			</result>
		</action>
	</package>



然后是action

public class LoginAction extends ActionSupport
{
	private static final long serialVersionUID = 1L;
	
	@Override
	public String execute() throws Exception
	{
		list.add("item1");
		list.add("item2");
		return SUCCESS;//super.execute();
	}
	
	private int[] array={1,2,3,5};
	private String name="name";
	private String password="password";
	private List<String> list=new ArrayList<String>();
	/**
	 * @return the name
	 */
	@JSON(name="usernmae")
	public String getName()
	{
		return name;
	}
	//此处省略众多属性的get,set方法

}


最后上jsp代码,只是个简单的代码,能把json字符串返回就认为成功(js部分用jquery)
   <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<%
String path = request.getContextPath();
request.setAttribute("path",path);
%>
<html>
  <head><script type="text/javascript" src="<%=path%>/js/jquery-1.4.4.min.js"></script>
	<SCRIPT type="text/javascript">
		$().ready(function()
			{
				$("#ajaxsubmit").click(function()
				{
					$.get("login.action",null,function(date)
						{
							//alert(date);
							$("#mydiv").html(date);
						}),
						"json"});
			});
	</SCRIPT>

  </head>
  
  <body>
    This is my JSP page. <br>
    <input type="button" id="ajaxsubmit" value="GetSth"/>
    <br/>
    <div id="mydiv" align="center"></div>
  </body>
</html>



结果就这么简单个例子,让我折腾了n久,
   www.baigoogledu.com 一下,有人写的例子是用JSONObject对象手动转换为JSON 字符串,然后把这个字符串的值作为Result返回的,我又试了一次,结果还是不行……

最后决定按照最原始的办法,手动添加jar包(用的myeclipse8.5,里面带struts2的向导,以及jar包了),程序全都重抄一遍,以排除错误,一弄不要紧,发现原来是struts版本的问题,struts2.1.8 在ajax的json转换上是有问题的,用struts2.2.1就没问题


用struts2.2.1要注意需要添加一个jar包“javassist-3.9.0.GA.jar”,在myeclipse的内置jar包里可以找到,据说在hibernate3.6版本里面也有。



你可能感兴趣的:(struts2,2.2.1,2.1.8,json.ajax)