在Spring MVC中,我们必须使用org.springframework.ui.Model
实例将模型传递给视图。它不是强类型的,我们必须像这样动态构建对象:
model.addAttribute("departmentID", departmentID);
model.addAttribute("departmentName", departmentName);
model.addAttribute("employees", employees);
但是,我来自ASP.NET MVC,我将强类型对象传递给视图,我有ViewDepartment
类,其departmentID
,departmentName
和{{1}字段,我只是将实例传递给视图。这里它不起作用,但我仍然需要使用employees
类,因为我偶尔会将它作为对AJAX请求的响应发送。
所以,为了让它在Spring MVC中运行,我需要将ViewDepartment
对象转换为ViewDepartment
的实例,一种方法是从org.springframework.ui.Model
构建org.springframework.ui.Model
:< / p>
HashMap
问题是,如何从Model.addAllAttributes(Map<String,?> attributes)
类的实例构建Map<String,?> attributes
?创建HashMap对象并手动设置每个属性的每个属性不是选项,因为它不是DRY。我需要一些方法来处理任何类,因为我在其他控制器中有其他模型类。
或者,可能是,有人可以告诉另一个解决此任务的解决方案,特别是与Spring MVC相关。
答案 0 :(得分:2)
您可以使用反射来获取所有字段及其值的映射。请注意,如果您有嵌套结构,这会变得复杂,但是使用给定的示例它应该可以工作,
public Map<String, Object> toMap( Object object ) throws Exception
{
Map<String, Object> map = new LinkedHashMap<>();
for ( Field field : object.getClass().getDeclaredFields() )
{
field.setAccessible( true );
map.put( field.getName(), field.get( object ) );
}
return map;
}