gpt4 book ai didi

java - Struts2 JSON转Java Action Object(找不到错误)

转载 作者:行者123 更新时间:2023-11-30 03:04:10 25 4
gpt4 key购买 nike

我已经尝试了多个版本并阅读了几个相关的答案,但我仍然无法弄清楚为什么 Struts 没有填充我的 Action 属性 user

这是我的 ajax 调用

function save_new_user() {

var user =
{ username: $('#new_user_username').val(),
email: $('#new_user_email').val(),
password: $('#new_user_password').val()
};

user_json = JSON.stringify(user);
console.log(user_json);

var data = {'user': user_json};

$.ajax({
type : 'GET',
url : 'SaveNewUser',
data: data,
dataType : "json",
contentType: 'application/json',
success : function(data, textStatus, jqXHR) {
if(data) {

}
},
});
}

顺便说一句,在控制台中打印此内容

{"username":"dd","email":"ff","password":"gg"}

我的 Action 类(带注释)(我没有修改 struts2-json-plugin-2.3.24.1 中的 json-default 拦截器)是

package coproject.cpweb.actions;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import com.opensymphony.xwork2.ActionSupport;

import coproject.cpweb.utils.db.entities.UserDum;
import coproject.cpweb.utils.db.services.DbServicesImp;

@Action("SaveNewUser")
@ParentPackage("json-default")
@Results({
@Result(name="success", type="json"),
@Result(name="input", location="/views/error.jsp")
})
public class SaveNewUser extends ActionSupport{

private static final long serialVersionUID = 1L;

/* Services */
DbServicesImp dbServices;

public DbServicesImp getDbServices() {
return dbServices;
}

public void setDbServices(DbServicesImp dbServices) {
this.dbServices = dbServices;
}

/* Input Json */
private UserDum user = new UserDum();

public UserDum getUser() {
return user;
}

public void setUser(UserDum user) {
this.user = user;
}

/* Execute */
public String execute() throws Exception {

// dbServices.saveUser(user);

System.out.println(user.getUsername());

return "SUCCESS";
}


}

UserDum 实体是

package coproject.cpweb.utils.db.entities;

public class UserDum {

private String username;
private String email;
private String password;

public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

但是,当请求到达时,struts-json-plugin 的 json 拦截器在尝试设置“user”时遇到异常。

feb 04, 2016 12:20:14 PM com.opensymphony.xwork2.interceptor.ParametersInterceptor error
SEVERE: Developer Notification (set struts.devMode to false to disable this message):
Unexpected Exception caught setting 'user' on 'class coproject.cpweb.actions.SaveNewUser: Error setting expression 'user' with val
ue ['{"username":"dd","email":"ff","password":"gg"}', ]
feb 04, 2016 12:20:14 PM com.opensymphony.xwork2.util.LocalizedTextUtil warn
WARNING: Missing key [invalid.fieldvalue.user] in bundles [[org/apache/struts2/struts-messages, com/opensymphony/xwork2/xwork-mess
ages]]!

有任何关于可能出现错误的线索吗?

最佳答案

扩展json-default包并没有将json拦截器设置为拦截器的defaultStack,它只是定义存在这样的拦截器。

@Action 注释中使用 interceptorRefsjson 拦截器和 defaultStack 设置为操作。

@Action(value="SaveNewUser", 
interceptorRefs={ @InterceptorRef("json"),
@InterceptorRef("defaultStack") })

或者在类级别的@InterceptorRefs将拦截器应用到该类中定义的所有操作。

@InterceptorRefs({
@InterceptorRef("json"),
@InterceptorRef("defaultStack")
})

关于java - Struts2 JSON转Java Action Object(找不到错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35199967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com