2013-09-26 54 views
0

通過業務操作從數據庫加載儘可能少的數據是一種很好的做法。有時直接使用實體(模型)對象作爲命令對象並不安全。那麼選擇命令對象的方法應該是什麼?對每個視圖使用單獨的命令對象是沒有意義的。Spring MVC web應用程序:如何選擇命令對象?

用例或一個很好的資源表示讚賞。謝謝。

回答

0

這是真的使用域對象作爲命令對象時,你可能有一些安全問題,春嘗試每一個參數綁定到命令字段,因此用戶可以在修改在不應該的字段請求添加額外的參數約束。如果你去了這個方法,一定要確定或者白名單或參數的黑名單予以約束:

@InitBinder 
public void initBinder(WebDataBinder binder) { 
    binder.setAllowedFields("firstName", "lastName"); 
} 

@InitBinder 
public void initBinder(WebDataBinder binder) { 
    binder.setDisallowedFields("id", "creationDate"); 
} 

另一種方法是創建一個額外的類表格。這個類可以更好地適應UI的需求,如果你的域對象不匹配,您可以在視圖層所需要的。這個類可以封裝任何網絡邏輯,驗證和從域對象複製到/邏輯。

所以我會說,只要你設置一個白/黑名單,並且你不修改它,因爲UI需求(在域對象中添加額外的字段或額外的邏輯),否則去域對象是好的,否則你應該創建一個額外的命令對象。

相關問題