修改String字段的getter的返回值

时间:2012-03-02 11:21:50

标签: grails groovy

假设我的应用程序中有类似于类类的类,包含一些Long,Double,Date和String字段。这些类扩展了基类,包含一些常见字段和几种常用方法。每当我访问String类的字段(虽然是getter)时,我想对返回的值进行一些更改(例如删除html标记)。有没有比为String类型的每个字段实现getter更好的方法?继承的字段怎么样?

2 个答案:

答案 0 :(得分:1)

不要更改Grails为您创建的默认getter / setter实现。你肯定会在各个地方弄乱你的应用程序。 Grails使用约定优于配置,因此getter / setter应该保持不变。

创建自己的方法,返回您想要的内容:对于字段标题创建方法getStrippedTitle()。您也可以将此方法添加到瞬变中。

答案 1 :(得分:1)

如果更改了设置的值,或者返回的值与设置的值不同,则会混淆Hibernate。这是因为当您从数据库加载实例时,Hibernate会将原始数据保留在其第一级缓存中,并向您返回域对象实例。刷新时,它会将当前状态与原始状态进行比较,如果更改,则会将更改推送到数据库。因此,如果您返回的值与设置值不同,但实际上没有更改该值,则Hibernate无法区分。

离开属性并创建返回更改数据的方法会更好。我使用的一个约定是,例如,如果您有String body字段,则可以通过属性名称body或getter getBody()访问它,但您可以创建body() 1}} Hibernate未知的方法,并返回你想要的任何内容。