Использование портлета Spring @ActionMapping

Может ли кто-нибудь объяснить, как правильно отображать запрос POST? это не ясно из документации API.

value должно быть присвоено значение параметра действия javax.portlet.action

@ActionMapping(value = "addDocOrder")
public void addDocOrder(@ModelAttribute("order").......

И затем у нас есть «параметры» (JAVADOC: параметры сопоставленного запроса, сужающие первичное сопоставление.)

@ActionMapping(params = "action=addDocOrder")
public void addDocOrder(@ModelAttribute("order").......

JAVADOC для параметра value() аннотации: Имя действия в соответствии с параметром Portlet 2.0 "javax.portlet.action". Если не указано, метод будет использоваться как обработчик по умолчанию: т. е. для запросов действий, для которых не найдено конкретное сопоставление действий. Обратите внимание, что все такие аннотированные методы действия применяются только в пределах ограничений @RequestMapping содержащего класса обработчика.

Я абсолютно не понимаю, в чем смысл существования параметра аннотации «значение». на самом деле нет никакого смысла в том, чтобы быть там ... оно должно быть первичным сопоставлением, params - вторичным, но {params = "action = addOrder"} делает "value" избыточным.

ПОЖАЛУЙСТА: взгляните на эту проблему, которая также актуальна https://stackoverflow.com/questions/4782971/handling-ajax-requests-with-spring-portlet


person lisak    schedule 03.01.2011    source источник


Ответы (2)


Я тоже согласен с вашей оценкой. Единственное реальное преимущество, которое я вижу при чтении спецификации, заключается в том, что в теге была добавлена ​​некоторая специальная обработка. По-видимому, эти два эквивалентны:

<portlet:actionURL>
  <portlet:param name="javax.portlet.action" value="addDocOrder"/>
</portlet:actionURL>

<portlet:actionURL name="addDocOrder" />

Это из «тега actionURL PLT.26.2» в спецификации.

person Eric    schedule 03.01.2011
comment
Я благодарен весне за то, что они добавили поддержку портлетов, но у них очень низкий приоритет. Тот факт, что @ActionMapping не упоминается в документации, отчетах об ошибках и запросах функций, которые имеют больше голосов и их легче исправить, чем те, которые разрешены web-mvc, не разрешены, говорит сам за себя. - person lisak; 03.01.2011
comment
Итак, я разработчик проекта uPortal и Pluto, эталонной реализации спецификаций Portlet. Мы заканчиваем поддержку портлета 2.0 в uPortal, и одна из задач, которую мы собираемся решить, когда закончим, — это обновления для поддержки портлета Spring. У нас есть довольно большой список изменений, которые действительно должны улучшить поддержку и сделать ее более похожей на первоклассную среду MVC для портлетов. К сожалению, изменения, вероятно, пройдут через 8 месяцев, прежде чем они попадут в Spring. - person Eric; 03.01.2011
comment
привет, я пропустил этот комментарий, приятно знать кого-то опытного в этой области :-) Я думаю, вы автор этого wiki.jasig.org/display/PLT/AJAX+in+a+Portlet ? Я пересмотрел этот вопрос, потому что застрял с той же проблемой, которую вы там решаете. Я был бы очень признателен, если бы вы могли добавить несколько строк stackoverflow.com/questions/4782971/ Спасибо. - person lisak; 24.01.2011
comment
Конечно, я могу взглянуть, но этого вопроса, похоже, не существует. - person Eric; 08.02.2011

javax.portlet.action — это имя параметра, которому сопоставлено значение(). Итак, для отображения, например:

@ActionMapping(value = "addDocOrder")
public void addDocOrder(@ModelAttribute("order").......

Ваш запрос должен быть URL-адресом, который должен быть построен следующим образом:

<portlet:actionURL>
  <portlet:param name="javax.portlet.action" value="addDocOrder"/>
</portlet:actionURL>
person Eric    schedule 03.01.2011
comment
но это не имеет никакого смысла. Это то, для чего предназначен параметр аннотации params ( params — параметры сопоставленного запроса, сужающие первичное сопоставление.) Это означает, что значение является первичным сопоставлением. У него будет точно такая же функция, как ( params = action=addDocOrder ), для чего это нужно? - person lisak; 03.01.2011
comment
Это имело бы смысл, если бы params были параметрами из тела запроса http POST (поля формы), но эта комбинация действительно сбивает с толку. - person lisak; 03.01.2011
comment
извините, я хотел сказать: это не имело бы смысла - person lisak; 03.01.2011
comment
values ​​просто предоставляет сокращение для параметров из моего использования, пока эти два одинаковы: @ActionMapping(value = addDocOrder) @ActionMapping(params = javax.portlet.action=addDocOrder) - person Eric; 03.01.2011
comment
Я изменил вопрос, чтобы было понятнее - person lisak; 03.01.2011