在SSH+Json开发过程中,曾遇到过出现以下错误:
Class com.googlecode.jsonplugin.JSONWriter can not access a member of class org.springframework.aop.interceptor.ExposeInvocationInterceptor$1 with modifiers "public"
经过分析和测试,发现最终原因是:一般我们在写在spring注入是会同时提供get 和set 方法,若使用json执行act
ion后返回json数据,此时就会出现上面的异常错误。
解决办法是,去掉get 方法 。
代码:
public class UserAction extends ActionSupport {
private IUserService service;
private User user;
private boolean isSuccess;
private String message;
// 用户注册action
public String userRegister() throws Exception {
service.save(user);
return SUCCESS;
}
// 用户登录验证action
public String userLogin() throws Exception {
if (service.validateUser(user)) {
isSuccess = true;
message = "登录成功,欢迎使用!";
return SUCCESS;
}
isSuccess = false;
message = "登录失败,请检查输入信息!";
return SUCCESS;
}
public void setService(IUserService service) {
this.service = service;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@JSON(serialize = true)
public boolean isSuccess() {
return isSuccess;
}
@JSON(serialize = true)
public String getMessage() {
return message;
}
}
strut配置文件actinon
<action name="login" class="userAction" method="userLogin">
<result type="json" />
</action>
这样就不会报错了。
代码:
public class UserAction extends ActionSupport {
private IUserService service;
private User user;
private boolean isSuccess;
private String message;
// 用户注册action
public String userRegister() throws Exception {
service.save(user);
return SUCCESS;
}
// 用户登录验证action
public String userLogin() throws Exception {
if (service.validateUser(user)) {
isSuccess = true;
message = "登录成功,欢迎使用!";
return SUCCESS;
}
isSuccess = false;
message = "登录失败,请检查输入信息!";
return SUCCESS;
}
public void setService(IUserService service) {
this.service = service;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@JSON(serialize = true)
public boolean isSuccess() {
return isSuccess;
}
@JSON(serialize = true)
public String getMessage() {
return message;
}
}
strut配置文件actinon
<action name="login" class="userAction" method="userLogin">
<result type="json" />
</action>
这样就不会报错了。