Portlet:提交动作或直接呈现阶段的表单?

时间:2012-01-17 01:07:05

标签: spring-mvc portlet jsr286

在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>

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

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

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

1 个答案:

答案 0 :(得分:0)

由于缺乏答案,似乎没有办法通过门户方式来解决它,但我偶然发现How do you overcome the html form nesting limitation?并感谢shovavnik,看起来至少在某些时候html 5将是救援