我使用安全子系统来控制用户访问权限。 (我的问题可能不依赖于哪一个,所以让我们假设控制器(Java)方面有一个方法,它可以判断当前用户是否具有给定的权限。)
我想控制FXML级别表单上某些控件的行为和可访问性。像这样:
<Button ... disable="$controller.hasNotPermission" permission="permissionCode">
或
<Text ... visible="$controller.hasPermission" permission="permissionCode">
控制器的has(Not)Permission
方法将从调用者控件获取权限属性值,并根据用户角色进行检查。
简单的方法是创建我自己的控件(PermissionControlledButton,PermissionControlledText等),并将这个属性和支持函数添加到它们。这种方法的问题是需要对几十个控件类进行子类化,并为所有控件类添加相同的代码(即使它只有几行)。
另一种可能的方法是将此逻辑移动到我的控制器的initilaize
方法并将它们绑定在那里。
但是,如果有任何方法可以将此信息保存在FXML级别并避免继承子类,那么我很有勇气?