【问题标题】:how do you define custom serializer for list of object before adding it to modelAttribute in Spring 4?在 Spring 4 中将对象列表添加到 modelAttribute 之前,如何为对象列表定义自定义序列化程序?
【发布时间】:2015-05-13 07:51:03
【问题描述】:
@Controller
public class ManageEmployee{
@ModelAttribute("employeeForm")
public EmployeeForm createEmployeeForm(Model model, HttpSession session){
EmployeeForm eform = new EmployeeForm ();
List<EmployeeDTO> eList = employeeService.getEmployeeList(employeeId)//employeeId comes from session
eform.setEmployeeDTO(eList );
model.addAttribute("empoyeeList",eList );
return eform;
}
@RequestMapping(value = LogInUris.MANAGE_EMPLOYEE, method =   RequestMethod.GET)
public String showEmployee(Model model, ModelMap map) throws     ServiceException{ 
    return "employeeView";
}
}

public class EmployeeDTO{
 private String eId;
 private String eName;
 private String eLastName;
 private String positon;
 private String role;
//getter//setter
}

当用户调用MANAGE_EMPLOYEE url 时,我返回employeeView(jsp),我必须在其中显示员工列表,以便用户可以编辑并再次保存它。我知道我可以在我的 DTO 使用@JsonSerialize(using=EmployeeDTOSerializer.class)Controller 进行http 请求并注释@ResponseBody 但在这里我将其添加到模型属性中,所以我想知道如何在将对象列表发送到@987654327 之前对其进行序列化@。

【问题讨论】:

  • 你说的序列化是指JSON吗?
  • 是的,我们可以将对象列表转换为json格式并将其添加到ModelAttribute并发送到JSP吗?

标签: json spring model modelattribute modelandview


【解决方案1】:

您必须使用其中一个库自己完成。例如,您可以使用来自JacksonObjectMapper

   // In configuration:
    ObjectMapper mapper=new ObjectMapper();

    //In Controller
    @ModelAttribute("employeeForm")
     public EmployeeForm createEmployeeForm(Model model, HttpSession session){
           EmployeeForm eform = new EmployeeForm ();
           List<EmployeeDTO> eList = employeeService.getEmployeeList(employeeId)//employeeId comes from session
           eform.setEmployeeDTO(eList );
           model.addAttribute("empoyeeList", mapper.writeValueAsString(eList) );
          return eform;
}

这(可能有一些修改)会将 json 字符串写入模型。但是我不会推荐这个。我建议向您的 jsp 添加一个 AJAX 调用,该调用将检索员工列表。然后,您必须向控制器添加一个方法,该方法将返回一个列表并使用@ResponseBody 对其进行注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2018-05-09
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    相关资源
    最近更新 更多