我的要求是我有一个隐藏的表单,我在那里调用句柄方法。除了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方法之前,我需要设置successurl
和errorUrl
。
我试着优先考虑,但仍然不起作用。
谢谢,Neenu
下面是我测试并运行的一段代码。
<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>
这里有几个关键点:
- 请确保导入您正在使用的表单处理程序
- 确保您正在使用的表单处理程序有一个实例变量和一个用于您试图设置的每个成功/错误url的公共getter/setter
- 你应该有一个类型为"submit"和
bean="<form handler method you are trying to call>
的<dsp:input>
。如果必须隐藏它,你可以使用CSS隐藏它 - 在我的代码示例中,我包含了一个HTML
<button>
标记来提交表单,但您可以用您的提交方法替换它