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版本里面也有。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值