Spring Portlet + Thymeleaf: объект привязки для ActionMapping

У меня проблема с портлетом Spring 4, использующим механизм шаблонов Thymeleaf.

Я хочу преобразовать существующий сервлет, который нормально работает, в портлет. Я использую Thymeleaf для редактирования объектов в формах в файлах JSP.

<form method="POST" th:object="${object}" th:action="${portletActionURL}"> <input th:field="*{objField}"/> ... <input type="submit"/> </form>

portletActionURL - это сгенерированный URL-адрес действия, который работает до сих пор. Как вы предполагаете, я хочу работать с object в моем контроллере. Я пробовал много способов понять это, например следующий:

@ActionMapping("saveChanges")
public void bla(@ModelAttribute("object") AnyDatatype object, ModelMap model, ActionResponse response, ActionRequest request) throws Exception { ...}

К сожалению, объекту не были присвоены его атрибуты после вызова действия. Мне это не очень интересно, но я не знаю, как реализовать это с помощью Thymeleaf.

Я знаю об использовании <form:form>, но Thymeleaf не смог проанализировать файл с помощью taglibs. Я определенно хочу использовать Thymeleaf, потому что большинство моих файлов JSP используют его, и, вероятно, изменение каждого файла требует больших усилий.


person Julian L.    schedule 30.04.2015    source источник


Ответы (1)


Я нашел решение!

Я использовал портлет на портале Liferay. Хотя Liferay по умолчанию требует параметры пространства имен, я отключил это в файле liferay-portlet.xml.

<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.2.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_2_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>MyPortletName</portlet-name>
<requires-namespaced-parameters>false</requires-namespaced-parameters>
</portlet>
</liferay-portlet-app>

Теперь он отлично работает без изменений в приведенном выше коде.

С уважением, Джулиан

person Julian L.    schedule 04.05.2015