Портлет: форма, которая подчиняется либо действию, либо непосредственно фазе рендеринга? - PullRequest
0 голосов
/ 17 января 2012

В проекте портлета (в котором используется весна 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 в сеансе, извлечь его из сеанса в методе рендеринга и вернуть его.,Но это все еще похоже на неприглядный хак.Какие-нибудь красивые решения для этого?

1 Ответ

0 голосов
/ 17 июня 2012

Из-за отсутствия ответов, кажется, не существует способа решить эту проблему с помощью портальных способов, но я наткнулся на Как вы преодолеваете ограничение на вложенность html-форм? и спасибо, шовавник, похожепо крайней мере, в какой-то момент HTML 5 будет спасением.

...