我正在努力解决复杂的json对象,如下所示:
var data= {service:{
client:{idClient: idClient},
pet:{idPet: idPet},
employee:{idEmployee: idEmployee},
conclusion: ''+conclusion}};
我通过这个发送它:
$.ajax({
url: 'registerService.action',
type:'post',
data: JSON.stringify(data),
contentType: 'application/json',
dataType: 'json',
succes: function(data){
//do something
}
});
触发异常:java.lang.NullPointerException,这意味着动作中的变量服务尚未实例化。
public class SomeAction extends ActionSupport{
private Service service; //getter y setter
public String registerService(){
Integer cod= (getServiceService().registerService(service));
return SUCCESS;
}
Service类看起来像这个
public class Service {
//everything with its respective setter a getter
private Client client;
private Pet pet;
private Employee employee;
private String conclusion;
public Service(){
client = new Client();
pet = new Pet();
employee= new Employee();
}
}
此外,不同对象的每个id都是Integer。
我希望能得到帮助 提前谢谢
解
在对象服务实例化之后,它的属性为null,这是因为我没有包含在struts.xml中,并且动作将各个拦截器映射为以下
struts.xml中
<interceptors>
<interceptor name="json" class="org.apache.struts2.json.JSONInterceptor"/>
</interceptors>
动作映射
<action name="registerService" class="servicioActionSpring" method="registerService">
<interceptor-ref name="json"/>
<result type="json"></result>
</action>
答案 0 :(得分:1)
这是正确的属性应该初始化。
private Service service = new Service(); //getter y setter
或者您可以使用内部DI机制this方式进行。如果您正在使用其他DI框架,则应使用相应的插件。
因为您正在向操作发送JSON,所以请确保您在操作配置中使用了json
拦截器。