问题描述
才上班几天,想问下大家在使用struts2处理ajax请求时,怎么实现比较合理!?数据交换格式用json!谢谢!···我只知道在action里拼装json拿到页面eval来处理!···请赐教···谢谢!struts2里lib包下的json包和json-plug 怎么用呢? 问题补充:lapulande 写道
解决方案
说一下啊我工作中的怎么使用的吧。Ajax请求使用Jquery发送Ajax请求。在服务端专门有一个Action来处理Ajax请求。返回数据格式用Json。比较方便的。jsonplugin-0.32.jar包放到你的lib目录下就可以了。然后就是配置了。我是把所有的Ajax请求的Action放在一个package里,注意这个package要extends="json-default",action的result要注明是json.如:<result type="json">。至于json传到页面时。就用你说的eval就可以了。没有什么难的地方。唯一有点问题的地方估计是jsonplugin.jar和struts2的版本匹配了。你可以到这个地方看看。http://code.google.com/p/jsonplugin/downloads/list。
解决方案二:
恩是滴~~给你个例子:public class LoginAction extends ActionSupport {private static final long serialVersionUID = 1L;private String username;private String password;private String permission;private boolean result;public boolean isResult() {return result;}public void setResult(boolean result) {this.result = result;}public String getPermission() {return permission;}public void setPermission(String permission) {this.permission = permission;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String validateUser() throws Exception {/*this.setResult(false);LoginManager userManager=new LoginManagerImpl();int userId=userManager.login(username, password, permission);System.out.println(userId);if(userId>0){this.setResult(true);}*/return SUCCESS;}}我把处理数据的部分注释掉了。如果你前台传了username,password,permission这种类似的数据,一定要先封装一下,这样才可以获得值。这里return的数据就是以上传过来的数据,你可以在前台alert一下就可以看到了。关于你说的response我没有在我写的程序里用到过,我也新学不久,在servlet、Jsp中接触过response。你用的struts是1还是2?1中好像用这个的?struts2好像都用return了么。
解决方案三:
首先在struts.xml中添加以下内容,具体内容请自行替换:<package name="default" namespace="/" extends="json-default"> <action name="login" class="com.hyit.ttmsoge.login.action.LoginAction" method="validateUser"> <result type="json"> <param name="defaultEncoding">utf-8</param> </result> </action>之后Action中返回的内容会自动打包成json格式的数据传到前台ajax中。