2014-09-03 63 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

當然,你想在不同的類中建立不同的需求,這些需求可能依賴於客戶端插入。就像一個策略。這樣你可以獨立地進行單元測試,並保持耦合的好壞。

相關問題