将对象从Javascript发送到Action类struts2?

时间:2014-01-03 11:32:29

标签: java javascript ajax jsp struts2

在我的Action课程中,我有一个POJO类的对象。

public class ConfigureTspThresholdAction extends
    ActionSupport implements SessionAware, ModelDriven<GmaThresholdParameter>{

    private Map<String,Object> session;

    private String circleId;
    private String tspId;
    private String thresholdTypeFlag;

    GmaThresholdParameter gmaThresholdParameters = new GmaThresholdParameter();

GmaThresholdParameter也是POJO(我的Entity类),里面有各种各样的成员,我希望用户填写这些成员。

我在JSP中的textfields中获取了用户填充的值:

JSP:

<s:div id="thresholdParametersDiv" cssStyle="display: none">
<table>
    <tr>
        <td>Minimum Number of OG Calls</td>
        <td><s:textfield id="thresholdParameter_1"
                name="minNumberOc"
                onkeypress="return isNumber(event,'thresholdParameter_1')"></s:textfield></td>
    </tr>
    <tr>
        <td>Minimum Duration of OG Calls (in secs)</td>
        <td><s:textfield id="thresholdParameter_2"
                name="minDurationOc"
                onkeypress="return isNumber(event,'thresholdParameter_2')"></s:textfield></td>
    </tr>
    <tr>
        <td>Maximum Number of IC Calls</td>
        <td><s:textfield id="thresholdParameter_3"
                name="maxNumberIc"
                onkeypress="return isNumber(event,'thresholdParameter_3')"></s:textfield></td>
    </tr>
    ..........similarly other textfileds
</table>

文本字段中的name属性,其值是GmaThresholdParameter的成员变量,我想填充它。

现在,我想从这些文本字段中选取值,并在我的GmaThresholdParameter gmaThresholdParameters = new GmaThresholdParameter();课程中填写Action

对于其他原始变量,我通过getter / setter填充它们,并使用与Action类相同的名称发送我的AJAX调用,如:

JS:

$.ajax({
    type: 'POST',
    traditional: true,                  
    url: '/gma/updateThresholdParameters.action',
    data:
    {
        circleId: circleId,
        tspId: tspId,
        thresholdTypeFlag: thresholdTypeFlag,

        // HERE I want to send my GmaThreshholdParameter object. How to send it so that it fills my object in action class ?
    }

我想将GmaThreshholdParameter对象从JavaScript发送到Action类。如何发送它以使它在动作类中填充我的对象?

我应该从数组中的textfileds中收集值并发送它还是创建一个JavaScript Object来从JavaScript中发送映射Java POJO对象的对象? 对此有什么解决方案吗?

2 个答案:

答案 0 :(得分:1)

尝试在Struts2操作中为gmaThresholdParameters定义一个getter和一个setter。

然后,在您的javascript中,试试这个:

...
data:
{
   circleId: circleId,
   tspId: tspId,
   thresholdTypeFlag: thresholdTypeFlag,
   "gmaThresholdParameters.property1": whateverValueProperty1,
   "gmaThresholdParameters.property2": whateverValueProperty2,
   "gmaThresholdParameters.property3": whateverValueProperty3, 
   ...
}
...

如果您为gmaThresholdParameters对象定义了一个空构造函数,并为其属性定义了getter和setter,那么它应该正确填充它。

答案 1 :(得分:1)

构造data对象时,可以从文本字段中获取值。对于实现ModelDriven和拦截器的引用,您不需要指定嵌套属性的路径,因为它们位于值堆栈的顶部。

data:
{
    circleId: circleId,
    tspId: tspId,
    thresholdTypeFlag: thresholdTypeFlag,

    minNumberOc: $("#thresholdParameter_1").val(),
    minDurationOc: $("#thresholdParameter_2").val(),
    maxNumberIc: $("#thresholdParameter_3").val()

}