0
在Portlet項目(使用彈簧3.1),請看下面的表格:Portlet:提交給操作還是直接呈現階段的表單?
<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方法中彈出並返回。但是,這仍然是一種無用的黑客攻擊。任何漂亮的解決方案?