日期:2014-05-19  浏览次数:20701 次

关于JQuery easyUI的datagrid问题
最近练手一个小项目,主要是ssh整合+jQuery easyUI做的界面,,问题描述:

通过jQuery提交登陆表单到action,然后action处理以后,返回一个字符串给前台,
public class UserAction extends ActionSupport {
private UserManager um;
private String result;//返回结果
public String login() {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
String verify = request.getParameter("verify");
String sessionVerify = (String)session.getAttribute("verify");
if(sessionVerify!=null && !"".equals(sessionVerify)) {
if(!(sessionVerify).equals(verify)) {//验证码错误
setResult(Protocal.WRING);
}else {
String name = request.getParameter("name");
String pass = request.getParameter("pass");
String utype = request.getParameter("utype");
User user = new User(name, pass, utype);

if(um.isExist(user)){
session.removeAttribute("verify");//验证码从session中移除
session.setAttribute("user", user);//把user添加到session中
setResult(Protocal.SUCCESS);
}else {//用户名或密码错误
setResult(Protocal.FAILED);
}
}
}else {
setResult(Protocal.REMOVED);
}
return SUCCESS;
}

然后action的配置:
<action name="loginAction" class="userAction" method="login">
<result type="json">
<param name="noCache">true</param>
<param name="root">result</param>
</result>
</action>

这样,前台的回调函数就会获得到result的字符串,根据字符串进行判断。。


现在datagrid需要通过action获取数据,但是他需要的是json对象,,
<action name="getUser" class="userAction" method="getUser">
<result type="json">
<param name="noCache">true</param>
<param name="excludeProperties">um</param>
<!-- 上面的属性不进行序列化,返回JSON对象;如果配置root,返回一个字符串 -->
</result>
</action>
但是,这样返回后,datagrid无法获取到数据,,

求解决,谢谢。。。。。。。。



还有一个问题,通过action进行逻辑处理,,还需要获取HttpServletRequest 和session等,,这样做有什么意义呢???为什么不直接使用Servlet????



------解决方案--------------------
<action name="loginAction" class="userAction" method="login">
<result type="json">
<param name="noCache">true</param>
<param name="root">result</param>
</result>
</action>

这样返回一个json字符串就行了啊,datagrid就能拿到数据了.

你说的datagrid需要json对象,跟返回字符串不冲突

action返回字符串后,jquery会先转化为json对象,然后datagrid用就行了


------解决方案--------------------
看你的 action

String sessionVerify = (String)session.getAttribute("verify");

没session怎么行

action就是一个servlet
------解决方案--------------------

<result type="json" name="abc"><param name="root">result</param></result>
name==Action方法结束后的return "abc";
------解决方案--------------------
{\"total\":20,\"rows\":[{\"id\":\"1\",\"username\":\"hys\",\"realname\":\"天堂口\","+
"\"sex\":\"男\",\"birthday\":\"1990-01-01\","+
"\"address\":\"安徽省\",\"title\":\"学生\",\"tel\":\"15111111111\",\"email\":\"hys@163.com\"}]}