Spring Portlet + Thymeleaf:为 ActionMapping 绑定对象

Spring Portlet + Thymeleaf: Bind object for ActionMapping

使用模板引擎 Thymeleaf 的 Spring 4 Portlet 出现问题。

我想将工作正常的现有 servlet 转换为 portlet。 我使用 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 文件都使用它,并且更改每个文件可能要花费很多精力。

我找到了解决方案!

我在 Liferay 门户中使用了 portlet。虽然 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>

现在,无需更改上述代码即可正常工作。

此致 朱利安