2017-02-21 12 views
5

Tôi muốn cắt tất cả các hình thức lĩnh vực chuỗi cắt tự động (trailing & không gian hàng đầu chỉ)Làm thế nào để tự động cắt chuỗi của đối tượng đậu vào mùa xuân với api Restful?

Giả sử nếu tôi vượt qua FirstName = "robert" dự kiến: "robert"

điều khiển lớp có đoạn mã sau:

@InitBinder 
public void initBinder (WebDataBinder binder) 
{ 
    StringTrimmerEditor stringtrimmer = new StringTrimmerEditor(true); 
    binder.registerCustomEditor(String.class, stringtrimmer); 
} 

@RequestMapping(value = "/createuser", method = RequestMethod.POST) 
public Boolean createUser(@RequestBody UserAddUpdateParam userAddUpdateParam) throws Exception { 

    return userFacade.createUser(userAddUpdateParam); 
} 

khi tôi gỡ lỗi mã, Nó sẽ được đưa vào @InitBinder nhưng không cắt xén các trường chuỗi lớp bean.

Trả lời

1

Chú thích @InitBinder không làm việc với @RequestBody, bạn phải sử dụng nó với @ModelAttribute chú thích

Bạn có thể tìm thêm thông tin trong tài liệu mùa xuân:

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html

+0

Tôi muốn dữ liệu biểu mẫu ở định dạng JSON nên tôi không thể Chú thích e @ModelAttribute. Tôi đang thực hiện cuộc gọi api an toàn bằng cách sử dụng mùa xuân. –

+0

Vì vậy, bạn không thể làm điều đó với @InitBinder. Kiểm tra liên kết này, tôi nghĩ rằng đó là cùng một vấn đề của bạn: http://stackoverflow.com/questions/25403676/initbinder-with-requestbody-escaping-xss-in-spring-3-2-4 – mlg

0

Thử vào mã bên dưới:

@InitBinder 
public void setAllowedFields(WebDataBinder dataBinder) { 

dataBinder.registerCustomEditor(String.class, new PropertyEditorSupport() { 
    @Override 
    public void setAsText(String text) { 
     if (text == null) { 
      return; 
     } 
     setValue(text); 
    } 

    @Override 
    public String getAsText() { 
     Object value = getValue(); 
     return (value != null ? value.trim().toString() : ""); 
    } 
}); 
} 
Các vấn đề liên quan