2012-08-24 87 views
0

我目前正在開發一個GWT應用程序,我想根據用戶權限動態呈現UI。 說,在我的應用程序中,我有一個產品列表和編輯該列表的可能性(添加新產品,刪除等)。GWT:動態UI渲染

我也有擁有隻讀權限的用戶和擁有寫權限的用戶。它是現在可能(或者是可行的)做這樣的事情在我的UI類:

if (user.hasWritePermissions) { 
    Button addButton = new Button() 
} 

所以,如果沒有寫權限的用戶看不到添加和刪除按鈕?當然,我的後端也有權限檢查,但如果用戶只能看到他可以使用的內容,這很方便。

或者GWT還有其他更好的可能嗎?

回答

2
  • 你的方法很好。
  • 與任何Java代碼,你可以利用多態性(例如EditableProductListView和ReadOnlyProductListView)
  • 理論上,你也可以用延遲綁定做到這一點,但是這是一個不好的使用情況吧:好如果你只有兩三種類型的用戶,這是可行的。然後,您可以使用<define-property name="role" values="readonly,readwrite" />引入您自己的延遲綁定屬性。但是這裏的優勢可能很小(用戶可以少下載幾個代碼塊),而排列的數量卻呈指數級增長。

當然,這都是風格問題。這些方法都不是更好或更差的安全方式,因爲實際的權限檢查(如您已經提到的,但我會再說一遍)必須在服務器端執行。

1

你也可以給所有的「管理」-Button和UI元素一個CSS類。如果您將另一個CSS類設置爲rootpanel(或另一個祖先),則您的所有管理元素都將消失。

Change property of CSS class in GWT at runtime

body.admin .onlyForAdmin{ 
    display:block; 
} 

.onlyForAdmin{ 
    display:none; 
} 

但它不能告訴往往不夠:權限檢查需要在服務器端! (如你所說)