GWT:动态UI呈现

时间:2012-08-24 17:50:14

标签: gwt gxt dynamic-ui

我目前正在开发一个GWT应用程序,我想根据用户权限动态呈现UI。 比如,在我的应用程序中,我有一个产品列表和编辑该列表的可能性(添加新产品,删除等)。

我还拥有只读权限的用户和具有写权限的用户。现在可以(或者可行)在我的UI类中做这样的事情:

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

那么没有写权限的用户看不到添加和删除按钮?当然,我的后端也有权限检查,但如果用户只看到他可以使用的内容,这很方便。

或者GWT还有其他更好的可能吗?

2 个答案:

答案 0 :(得分:2)

  • 你的方法很好。
  • 与任何Java代码一样,您可以使用多态(例如EditableProductListView和ReadOnlyProductListView)
  • 理论上,您也可以使用延迟绑定,但这是一个不好的用例:好吧,如果您只有两种或三种类型的用户,它是可行的。然后,您可以使用<define-property name="role" values="readonly,readwrite" />引入自己的延迟绑定属性。但这里的优势可能很小(用户会少下载几个代码块),而排列的数量呈指数级增长。

当然,这完全是一种风格问题。这些方法都没有更好或更差的安全性,因为必须在服务器端执行实际的权限检查(正如您已经提到的,但我会再说一遍)。

答案 1 :(得分:1)

您还可以为所有“admin”-Button和UI元素提供CSS类。如果您将另一个CSS类设置为rootpanel(或另一个祖先),则所有管理元素都将消失。

Change property of CSS class in GWT at runtime

body.admin .onlyForAdmin{
    display:block;
}

.onlyForAdmin{
    display:none;
}

但它不能经常被告知:权限检查需要服务器端! (如你所说)