2013-04-22 56 views
1

我正在学习Struts2,并提交与JQuery序列化的窗体有以下问题。我有一个操作类,其中有一个名为Policy的对象,策略类具有如下所示的一组字段。使用jquery ajax我想在我的Action类中设置一个json字符串,并想将其反序列化为一个对象。Struts2 jQuery的Ajax窗体序列化

我试过多少次,我无法设置我在动作类中定义的字符串。下面是代码

Class CassPolicy{ 
    String policyNumber; 
    String name; 
    //getsets for members 

} 

操作:

Class PolicyAction{ 
    String cassPolicyString; 
    CassPolicy cassPolicy = new CassPolicy(); 
    //getsets for members 

    String save(){ 
//In save method I want to convert the policyString to policy object 
//policyString always returns null 
    } 
} 

JSP:

$.ajax({ 
url:PolicyAction.action, 
type:'post', 
data:$("#policyForm").serialize(), 
async:true, 
success:function(data){ 
} 

}); 

<s:form id="policyForm"> 
    <s:textfield name="cassPolicy.policyNumber" label="policyNumber"></s:textfield> 
    <s:textfield name="cassPolicy.name" label="name"></s:textfield> 
</s:form> 

我甚至尝试在阿贾克斯类似data:{cassPolicyString:$("#policyForm).serialize()}

有人可以帮我指出了正确的方向或者什么是完成我的任务的正确方法?

+0

你的表单字段名称不匹配的动作属性的名称,也不是明确的,如果确实有getter/setter方法的属性。你使用的是JSON插件吗?电线上发生了什么? – 2013-04-22 13:13:34

+0

感谢Dave的回复..我的getter和setter在我的对象和我的Action类中..我使用的是Struts2-Json插件,并且在我的struts.xml中有json-default ...我在我的json请求中看到这些值from browser as cassPolicy.policyNumber = 12345&cassPolicy.name = Test – user2192298 2013-04-22 13:24:31

+0

您的表单字段名称与操作属性名称不匹配。 – 2013-04-22 13:57:04

回答

0

我想通了终于..问题是表单序列化不给JSON格式。我使用下面链接中的代码将我的表单序列化为json对象,并在struts.xml中为我的操作添加了一个拦截器ref元素,最终将我的表单值分配给了cassPolicy对象。

Convert form data to JavaScript object with jQuery

+0

嘿,你可以请粘贴你的拦截器代码,如何真正转换JSON数据到CassPolicy Obj。我也在长期努力争取相同的要求。提前发送。 – vrs 2013-07-18 14:23:25