我正在使用Thymeleaf和Spring。我有一个页面,我想在其中填充一些字段,然后使用Map
将model.addAttribute
对象传递给页面模型,如下所示。 pbObject
是我们用于在表单页之间传递数据的PassbackObject
。
Map<String, Object> formData = new HashMap<>();
formData.put("station", station);
pbModel.setFromPriorForm(formData);
model.addAttribute("pbObject", pbModel);
System.out.println("The station object is: " + formData.get('station'));
System.out.println("The class of the Station object is: " + formData.get("station").getClass());
两个print语句按预期返回station
对象和org.unavco.web.response.obj.Station
,因此对象类型在这里很好。
当我尝试访问Thymeleaf中的Map对象时出现问题。
<input th:value="${pbObject.fromPriorForm.get('station').getClass()}"/>
以上代码使用class java.lang.String
填充输入字段。 这不是一个字符串!这是一个站点!是的,它看到了正确的数据,因为如果我删除.getClass()
,我会看到正确的数据(显然是一个字符串)。我需要以后能够访问对象属性,因此String不会删除它。为什么Thymeleaf将我的映射对象转换为String?如何使其保留原始对象类?