ATG dsp形成输入值

时间:2014-06-05 02:19:30

标签: jquery forms jsp atg

我试图在不重新加载整个页面的情况下提交表单。我非常有信心,因为我使用事件监听器来规避默认的表单提交逻辑,所以我有逻辑工作。

$("body").on("click", '#buttonHolder', function() {
        $.ajax({
            type: 'POST',
            data: $('#storeCart').serialize(),
            dataType: "html",
            url: "/inc/store/cart/cart-contents.jsp",
            cache: false,
            success: function(response) {
                $("#formHolder").html(response);
            }
        });
        return false;
    });

我的dsp表单看起来像这样

<dsp:form action="" id="storeCart" formid="storeCart" method="post">
  <dsp:droplet name="/atg/dynamo/droplet/IsEmpty">
      <dsp:param name="value" param="element.WarrantyId"/>
         <dsp:oparam name="true">
            <input type="text" value='<dsp:valueof param="element.quantity" />' maxlength="3" class="inputQuantity" name='<dsp:valueof param="element.catalogRefId"/>' id='quantity-<dsp:valueof param="element.catalogRefId"/>'/>
         </dsp:oparam>
      <dsp:oparam name="false">
         <dsp:valueof param="element.quantity" />
            <input type="hidden" value='<dsp:valueof param="element.quantity" />' maxlength="3" class="inputQuantity" name='<dsp:valueof param="element.catalogRefId"/>' id='quantity-<dsp:valueof param="element.catalogRefId"/>'/>
      </dsp:oparam>
    </dsp:droplet>
  <td id="buttonHolder"><dsp:input value="Submit" type="submit" bean="......"/></td>
</dps:form>

问题是我在前端添加值后似乎不想更改值。更清楚:

输入字段为值1.如果我继续将其更改为4,则检查元素,该值仍为1,这将在表单提交并生成响应时反映出来。所以做一个console.log($('testID')。val());在输入上给我1,而不是4(所需)。这也在请求标题中进行。

编辑:

我更新了dsp表单部分,以更准确地反映具有阴影隐藏字段的字段。我似乎无法获得接受新输入的表单。即使将新值注入chrome检查器,这些值也会将其自身声明为存储在jsp变量中的值。

2 个答案:

答案 0 :(得分:0)

每个输入字段都有一个相应的隐藏表单元素,由ATG在内部由DSP标记创建。您是否设置了相关的隐藏字段(如下面的firstname文本字段有一个以_D开头的相应隐藏字段:/atg..etc。,)

隐藏值必须设置为服务器正在发送的内容,因为您在更新文本字段时没有重新加载页面。

<input id=“testid” class=“teststyle " type=“text” value="" name="/atg/something/SomeFormHandler.value.firstname” maxlength="60">
<input type="hidden" value=" " name="_D:/atg/something/SomeFormHandler.value.firstname>

答案 1 :(得分:0)

上面的代码在使用ATG dsp标签时似乎不一致。

尝试使用<dsp:input>标记而不是html <input>标记。这将确保在您提交表单时字段被适当地映射到ATG FormHandler,例如

<dsp:input bean='YourFormHandler.value.quantity' name='<dsp:valueof param="element.catalogRefId"/>' id='quantity-<dsp:valueof param="element.catalogRefId"/>' type="hidden" iclass="inputQuantity" value='<dsp:valueof param="element.quantity" />' maxlength="3" />