在Struts2返回json,需要在Action中定义该变量还有写一个get方法。
1.以下是Action中的代码
public class LoginJsonAction extends ActionSupport implements ModelDriven<User> {
/**
*
*/
private static final long serialVersionUID = 1L;
private User user;
//用于返回消息
private String message;
@Override
public User getModel() {
if (user == null) {
user = new User();
}
return user;
}
// 登录方法
public String login() {
if (user.getUserName().equals(user.getPassword())) {
return SUCCESS;
}else {
message="用户名和密码不匹配";
return ERROR;
}
}
//========getter方法==========
public User getUser() {
return user;
}
public String getMessage() {
return message;
}
}
2.在struts.mxl中配置返回的json格式,有以下两种方式
(1)第一种,在package中继承json-default,并在result中指定返回类型为json,示例代码:
<!-- 返回json的第一种写法 -->
<package name="return-json" namespace="/json" extends="json-default">
<action name="loginJsonAction" class="com.gx.web.LoginJsonAction">
<result name="success" type="json">
<param name="root">user</param>
</result>
<result name="error" type="json">
<param name="root">message</param>
</result>
</action>
</package>
(2) 第二种,在package中定义result-type,示例代码:
<!-- 返回json的第二种写法 -->
<package name="return-json" namespace="/json" extends="struts-default">
<result-types>
<result-type name="json" class="org.apache.struts2.json.JSONResult">
</result-type>
</result-types>
<action name="loginJsonAction" class="com.gx.web.LoginJsonAction">
<result name="success" type="json">
<param name="root">user</param>
</result>
<result name="error" type="json">
<param name="root">message</param>
</result>
</action>
</package>
3.jsp页面代码:
<script type="text/javascript">
function login(){
var userName=$("#userName").val();
var password=$("#password").val();
$.get("${ctx}/json/loginJsonAction!login.action",{userName:userName,
password:password},function(data){
console.log(data);
},"json");
}
</script>