假設我的應用程序中有類域,類似於一些Long,Double,Date和String字段。這些類使用一些常用字段和幾個常用方法來擴展基類。每當我訪問類字段(雖然getter)是String時,我想對返回的值進行一些更改(例如,移除html標籤)。有沒有更好的方法比字符串類型的每個字段的getter的實現?關於繼承領域呢?修改字符串字段的getter的返回值
回答
不要更改由Grails爲您創建的默認getter/setter實現。你肯定會在各個地方弄亂你的應用程序。 Grails使用約定而不是配置,所以getters/setters應該保持不變。
創建你自己的方法,返回你想要的:對於字段標題create方法getStrippedTitle()。您也可以將此方法添加到瞬變中。
如果更改設置的值,或者返回的值與設置的值不同,則會混淆Hibernate。這是因爲當你從數據庫加載一個實例時,Hibernate將原始數據保存在它的第一級緩存中,並向你返回一個域對象實例。在刷新時,它會將當前狀態與原始狀態進行比較,如果更改,則會將更改推送到數據庫。所以如果你返回一個與設置值不同的值,但是並沒有真正改變它的值,那麼Hibernate就無法區分它們。
單獨留下屬性並創建返回更改數據的方法會更好。我用過的一個約定是,如果你有一個String body
字段,你可以通過屬性名body
或者獲取者getBody()
來訪問它,但你可以創建一個Hibernate未知的方法,並返回你想要的任何東西。
我同意你的警告。但我不是在談論映射到數據庫的實際域類。我使用的可能是傳輸對象(使用SomeJson類將jsons形成客戶端並從客戶端獲取數據解決了非常特殊的情況)。並且在每個這樣的類中的每個字段的函數方法中實現getter或類似的東西正是我想要避免的。嘗試了一些元編程的東西沒有成功,因爲它對我來說是非常新的... – Aidas 2012-03-02 18:20:20
- 1. 返回修改的字段中的LinqDataSource
- 2. 字符串修改值
- 3. 返回字符串值時()
- 4. 爲字段返回空字符串SQL
- 5. 字符串的返回子字符串
- 6. 基於字符串的返回字符串段
- 7. 修改字符串中的字符
- 8. 修改字符串
- 9. 修改字符串
- 10. 修改字符串
- 11. java方法返回一個修改後的字符串
- 12. 修改現有的PHP函數以返回字符串
- 13. 修改/設置從訪問器方法返回的字符串
- 14. 段違規修改字符串
- 15. 修改nodejs加密函數返回字符串中的非ASCII字符
- 16. 搜索字符串的字符串並返回其他值
- 17. 在PHP中返回字符串值的字符串操作?
- 18. PHP preg_match在子字符串後返回字符串中的值
- 19. 在getter中返回字符串引用的正確方法
- 20. 字符串中的VBScript返回值
- 21. Clojure的字符串返回值:
- 22. 過程的返回值,以字符串
- 23. Qt的C++返回字符串值
- 24. 的NSString:返回值或空字符串
- 25. 字符串tokenizer.nextToken()的返回值
- 26. 從字符串意外的返回值
- 27. 的Perl - 返回最後一個字母字符最後一位數字後的字符串,返回修改後的字符串也
- 28. 返回字典修改
- 29. strtok字符串和修改令牌值
- 30. 返回字符串
感謝您的回答。這與Burt Beckwith提供的非常相似,所以我的評論也適用於此。 – Aidas 2012-03-02 18:22:27