- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,我正在使用 Spring Webflow,我目前有一个涉及两个 jsp 页面( View )的流程,其中第二个页面将表单提交给第 3 方系统(付款)。
在我的 pay-flow.xml 中有这样的状态;
<!-- Initial state, the jsp(view) gathers the number of items to purchase -->
<view-state id="buy" view="credit/buy" model="credit">
<transition on="submit" to="createTrans" />
</view-state>
<!-- State not tied to a jsp, saves the "credit" object to the database -->
<action-state id="createTrans">
<evaluate expression="creditAction.saveTrans(credit)"/>
<transition to="wpRedirect"/>
</action-state>
<!-- Gathers some more info & has a form that submits to the 3rd party system -->
<view-state id="wpRedirect" view="credit/redirect">
<transition on="accepted" to="showInvoice" history="invalidate">
<evaluate expression="creditAction.reloadTrans(credit)" result="credit" />
</transition>
</view-state>
可以看到流程基本是这样的;
1) 显示第一个 jsp,用户输入一些详细信息,提交表单
2)后台保存模型对象到数据库
3) 显示第二个 jsp,用户输入更多详细信息并提交表单
4) 表单提交到第三方 URL,用户与第三方系统交互
5) 最终第 3 方重定向回流程
6) 在“接受”响应时,重新加载之前保存的模型对象
我想做的是将两个 jsp 合并为一个 View ,基本上将这三种状态压缩为一个。我有一些 javascript 和表单控件来收集所有信息。
问题是,我怎样才能将表单提交到第 3 方 URL,但在此之前,仍然在服务器端调用“creditAction.saveTrans(credit)”?显然这需要对用户透明,他们应该很高兴页面现在合并了,但仍然只需要在最后单击“提交”并在他们不知情的情况下完成所有后台保存和加载。
我在想我可以在提交按钮上放置一个 onclick,使它成为一个普通按钮,然后从类似于以下的 javascript 提交表单,但是我如何调用我的服务器端代码来将模型基本上保存在.submit()? 之前的行?
function submitform() {
<!-- call creditAction.saveTrans(credit) somehow??? -->
document.forms["myform"].submit();
}
最佳答案
你有两个选择:
1)使用JavaScript改变表单的target和action提交到一个隐藏的IFrame,提交,然后改回正常再提交。
2) 使用AJAX提交,然后正常提交表单。
关于java - 如何在将表单提交到 3rd 方 url 之前调用服务器端操作方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4715069/
我是一名优秀的程序员,十分优秀!