2014-09-03 54 views
1

我们有一个多租户应用程序,无论好坏,都可以在不同客户之间区分大量if-then-else语句。我有一个特别简单的验证,需要执行类似于以下情形的数据输入:价值对象中的业务验证是否可接受?

比方说,我们有一个名为Thermometer的对象,其名称为temperature。当用户输入一个数字时,我们需要将它舍入到最接近的3位小数。所以,如果他们输入“65.65432”,我们需要存储“65.654”。但是,等等,还有更多。客户Bob喜欢细节并且不希望数字四舍五入。客户Sarah是要求四舍五入的人。

如何做到这一点很简单,但其中这样做是我的问题。我想直接在价值对象Thermometer上做这件事,因为它很快速和简单,只是好像没错。但是,由于只有一个客户请求它,因此这属于“业务逻辑/验证”领域。把它放在值对象上还是可以接受的,或者我应该把它吸收并在表示层中构建它?这样做需要在处理UI的托管bean中的代理方法中包装访问器。哪个选项有更好的回报?

更多详细信息
对于任何人谁是有兴趣,这是JSF J2EE应用程序。我们通常有能力使用<f:numberConverter>,但在这种情况下,我们也使用<a4j:support event="onkeyup" ajaxSingle="true" />这似乎打破了numberConverter。所以我们必须手动进行舍入。

+2

我投票尽可能在UI中执行验证 – Leo 2014-09-03 18:58:58

+2

那么,您现在如何区分客户端?用户会话?配置文件?我会用这些,但我不知道你是否能够。 – markspace 2014-09-03 19:00:03

+0

问题不在于如何区分客户端。这是微不足道的,因为我们一直这样做。为了讨论的目的,假设我们有一个函数'isUserSarah()'。在我试图解决的现实世界问题中,我可以从嵌套属性获取客户端。 – musicin3d 2014-09-03 19:01:39

回答

1

当然,你想在不同的类中建立不同的需求,这些需求可能依赖于客户端插入。就像一个策略。这样你可以独立地进行单元测试,并保持耦合的好坏。