模型中业务方法寻求解惑

11-03-20 fnet
                   

我们现在有一个模型Member,我想输出Member的性别,比如先生、女士。

是否可以在模型中有这么一个方法

@Transient

public String getSexLang() {

return sex = 1 ? "先生" : "女士";

}

注:在标签层,我这么输出 ${item.sexLang}

性别是一个枚举。而现在的需求是能输出中文名称。

这样的方法能否放在模型中,能否做为一个业务方法存在呢。

这个判断过程我不想放在表现层,因为可能有多个页面需要判断,如果都写死,那么改的时候要到处找。

[该贴被fnet于2011-03-20 16:31修改过]

                   

5
axgle
2011-03-20 17:08

可以.没有问题,楼主别想的太多了.

banq
2011-03-21 07:00

可以委托专门组件实现,模型中封装的是精简战略目标,而不是如何实现,而且在专门组件中用配置文件定制中文语言,实现国际化。

fnet
2011-03-22 00:35

非常感谢指点。

按严格要求,模型中的确不应该出现这种方法。

1. 此方法没有业务含义

2. banq说的国际化原因

我想这个应该放到界面上去用国际化方式输出。

再次感谢。

banq
2011-03-22 08:16

2011年03月22日 00:35 "fnet"的内容
我想这个应该放到界面上去用国际化方式输出 ...

不一定非要转移到界面层,有的也不能转移,只能由模型指挥一些专门组件比如Pretty时间库http://www.jdon.com/jivejdon/thread/40047

这个组件是用来根据当前时间和数据修改时间差值,判断输出“XXX分钟前”或“XX分钟后”这样输出,是由业务模型驱动的。这个组件被我用在jivejdon上,如果一小时内有人发帖,就在全站发出通知“XX分钟前谁发了新帖”,这个页面显示内容都是在领域模型驱动下完成,但是代码中没有hardcode硬编码任何中文信息。

可下载jivejdon 4.2看看,主要模型在com.jdon.jivejdon.model.notification中。

http://sourceforge.net/projects/jdon/files/jivejdon/4.x/

2Go 1 2 下一页