0

在 Portlet 项目(使用 spring 3.1)中,考虑以下形式:

<portlet:actionURL var="actionUrl" />
<portlet:renderURL var="renderUrl" />
<form action="${actionUrl}" method="POST">
    <!-- A number of checkboxes -->
    With selected do:
    <button type="submit" name="stuff" value="action">Action</button>
    <button type="submit" name="stuff" value="render" onclick="jQuery(this).closest('form').prop('action', ${fn:escapeXml(json:json_encode(renderUrl))})">Render</button>
</form>

如您所见,有一个带有两个提交按钮的表单。根据按下的按钮,我要么想进入动作阶段,要么跳过动作阶段并直接进入渲染阶段。

上面的代码有效并且具有我想要的效果,但它并不漂亮。它更像是一个 hack,使用 javascript 交换表单的 action 属性。

是否有符合 JSR-286 的方法来执行此服务器端?我想到的一个想法是在动作阶段做我通常在渲染阶段做的事情(将 ModelAndView 对象放在一起),将 ModelAndView 存储在会话中,从渲染方法中的会话中弹出它并返回它. 但这仍然感觉像是一个不起眼的黑客。有什么漂亮的解决方案吗?

4

1 回答 1

0

由于缺乏答案,似乎没有办法通过门户方式解决它,但我偶然发现了如何克服 html 表单嵌套限制?并且感谢 shovavnik,看起来至少在某些时候 html 5 将成为救援。

于 2012-06-16T22:02:56.593 回答