2017-10-14 120 views
0

我需要更換或從用戶輸入刪除某些字符通過Java註解春季

是是集之後的變化值可以申報註釋替換字符串?

例如,我有用戶名字段的UserDTO類。我想更改Unicode字符。

請注意,我用Spring數據+ Web服務

@PostMapping("/register") 
public RestResult register(@Valid @RequestBody UserDTO userDTO){ 
    ... 
} 
+0

你會想爲UserDTO使用一個自定義的解串器。 – shinjw

+1

選中此:https://www.mkyong.com/spring-mvc/how-to-register-a-servlet-filter-in-spring-mvc/ – Shadov

+0

@Shadov thx,它可能,但較少處理類。我想爲某些課程使用註釋來爲字段或課程級別做這個 – Hamid

回答

1

這有兩種方法。

您可以編寫用於處理此邏輯的用戶名對象的setter。這個警告是任何通過你的setter傳遞的用戶名值將通過你的String按摩。

public class UserDTO implements Serializable { 
    @JsonProperty("username") 
    private String username; 

    public void setUsername(String username) { 
     this.username = username.replace("A", "B"); 
    } 

    public String getUsername() { 
     return this.username; 
    } 
} 

這樣做的另一種可能的方式是通過使用Jackson提供的@JsonCreator註解。

您需要記住,這將成爲使用UserDTO對象的跨所有對象的反序列化策略。但考慮到你正在尋找unicode(最可能是內部可讀格式),我會想象這將適合你的用例。

所以當通過你的方法,「ABC」將解析爲「BBC」。這可能是您的首選方法,因爲它可以讓您靈活地在需要時調整對象,而無需通過您的用戶名String清理。由序列化和構造函數創建的對象將通過清理,但setter將按原樣獲取值。在getter和setter中通過邏輯來獲取位置很容易。

+0

非常感謝您的完整解答。但有沒有可能爲類或字段編寫自定義註釋? – Hamid

+0

您是否在談論註釋字段方法或類將執行的其他行爲? – shinjw

+0

不是現在。我想即使傑克遜定製解串器對我來說也是很好的解決方案。任何我喜歡春天和冬眠使用它們的註釋 – Hamid