ATG Formhandler:Need 在调用 handle 方法之前设置一些值

ATG Formhandler:Need to set some values before calling the handle method

我的要求是我在调用 handle 方法的地方有一个隐藏的表单。除了 handle 方法,我还将成功和错误 url 设置为隐藏值。

    <dsp:form action="blank.jsp" method="post" formid="UNIQUE_FORM_ID">
    <dsp:input bean="FormHandler.commitOrder" type="hidden" value="submit" />
    <dsp:input bean="FormHandler.commitOrderSuccessURL" type="hidden" value="SOME_VALUE" />  
    <dsp:input bean="FormHandler.commitOrderNotReadyURL" type="hidden" value="SOME_VALUE" />  
    </dsp:form>  

我需要在调用 handle 方法之前设置 successurlerrorUrl

我试过设置优先级,但还是不行。

谢谢, 尼努

这是我测试过并有效的代码片段。

<dsp:importbean bean="/atg/commerce/order/purchase/CommitOrderFormHandler"/>

<dsp:form action="blank.jsp" method="post" formid="commitForm">
    <dsp:input bean="CommitOrderFormHandler.commitOrderSuccessURL" type="hidden" value="success.jsp" />  
    <dsp:input bean="CommitOrderFormHandler.commitOrderErrorURL" type="hidden" value="failure.jsp" />  
    <dsp:input id="submitFormInput" bean="CommitOrderFormHandler.commitOrder" type="submit" style="position: absolute; left: -9999px; width: 1px; height: 1px;"/> 
</dsp:form>

<%-- 
    If your form (including the submit button) is hidden,
    then I assume that elsewhere on the page, you have some
    other way to trigger the submission of your hidden form.  
 --%>
<button type="button" onclick="document.getElementById('submitFormInput').click()">Click Me!</button>

这里有几个要点:

  1. 确保导入您正在使用的表单处理程序。
  2. 确保您使用的表单处理程序有一个实例变量和一个 public getter/setter 用于您尝试设置的每个 success/error url。
  3. 您应该有一个 <dsp:input> 类型 ="submit" 和 bean="<form handler method you are trying to call>”。如果必须隐藏它,您可以使用 CSS.[=23 隐藏它=]
  4. 在我的代码示例中,我包含了一个 HTML <button> 标记来提交表单,但您可以将其替换为您的提交方法。