Портлет: формуляр, който се подчинява или на действие, или директно на фаза на изобразяване?

В проект на 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.

Има ли JSR-286 съвместим начин да се направи тази страна на сървъра? Една идея, която замислих, беше просто да правя нещата, които обикновено правя във фазата на рендиране (събирам обект ModelAndView) във фазата на действие, да съхранявам ModelAndView в сесия, да го извадя от сесията в метода за рендиране и да го върна . Но това все още се чувства като неприятен хак. Някакви красиви решения за това?


person yankee    schedule 17.01.2012    source източник


Отговори (1)


Поради липсата на отговори изглежда, че няма начин да се реши с портални начини, но се натъкнах на Как се преодолява ограничението за влагане на html формуляри? и благодаря, shovavnik, изглежда, че поне в някакъв момент html 5 ще бъде спасението.

person yankee    schedule 16.06.2012