GWT:动态UI呈现

GWT:动态UI呈现,gwt,gxt,dynamic-ui,Gwt,Gxt,Dynamic Ui,我目前正在开发一个GWT应用程序,希望根据用户权限动态呈现UI。 例如,在我的应用程序中,我有一个产品列表,并且可以编辑该列表(添加新产品、删除等) 我还有具有只读权限的用户和具有写入权限的用户。现在是否可以(或可行)在我的UI类中执行类似操作: if (user.hasWritePermissions) { Button addButton = new Button() } 这样,没有写入权限的用户就看不到“添加”和“删除”按钮?当然,我的后端也有权限检查,但如果用户只看到他可以使用的内

我目前正在开发一个GWT应用程序,希望根据用户权限动态呈现UI。 例如,在我的应用程序中,我有一个产品列表,并且可以编辑该列表(添加新产品、删除等)

我还有具有只读权限的用户和具有写入权限的用户。现在是否可以(或可行)在我的UI类中执行类似操作:

if (user.hasWritePermissions) {
  Button addButton = new Button()
}
这样,没有写入权限的用户就看不到“添加”和“删除”按钮?当然,我的后端也有权限检查,但如果用户只看到他可以使用的内容,这很方便

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

  • 你的方法很好
  • 与任何Java代码一样,您可以利用多态性(例如EditableProductListView和ReadOnlyProductListView)
  • 从理论上讲,您也可以使用延迟绑定,但这是一个糟糕的用例:好的,如果您只有两到三种类型的用户,这是可行的。然后,您可以使用
    引入自己的延迟绑定属性。但这里的优势可能很小(用户可以少下载几个代码块),而排列的数量呈指数增长
当然,这都是风格的问题。在安全方面,没有一种方法是更好或更差的,因为实际的权限检查(正如您已经提到的,但我要再次指出)必须在服务器端执行。

  • 你的方法很好
  • 与任何Java代码一样,您可以利用多态性(例如EditableProductListView和ReadOnlyProductListView)
  • 从理论上讲,您也可以使用延迟绑定,但这是一个糟糕的用例:好的,如果您只有两到三种类型的用户,这是可行的。然后,您可以使用
    引入自己的延迟绑定属性。但这里的优势可能很小(用户可以少下载几个代码块),而排列的数量呈指数增长
当然,这都是风格的问题。这些方法在安全性方面都不是更好或更差的,因为实际的权限检查(正如您已经提到的,但我要再说一遍)必须在服务器端执行。

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

但它不能经常被告知:权限检查需要在服务器端进行!(如您所述)

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

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

body.admin .onlyForAdmin{
    display:block;
}

.onlyForAdmin{
    display:none;
}