【发布时间】:2013-01-14 16:55:48
【问题描述】:
我正在尝试为我的 Wicket 应用程序实施一个简单的授权策略。我实现了自己的 AuthorizationStrategy(扩展 IAuthorizationStrategy)。
http://old.nabble.com/Authorization-strategy-help-td18948597.html 在阅读了上面的链接之后,我认为使用元数据驱动的授权比使用注释更有意义。
所以我有一个简单的 RoleCheck 类
public class RoleCheck {
private String privilege;
public RoleCheck(String priv) {
this.privilege = priv;
}
public void setPrivilege(String privilege) {
this.privilege = privilege;
}
public String getPrivilege() {
return privilege;
}
}
我添加了一个组件:
public static MetaDataKey<RoleCheck> priv = new MetaDataKey<RoleCheck>() {};
editLink.setMetaData(priv, new RoleCheck("Update"));
在我的授权策略类中,我尝试获取与组件关联的元数据:
public boolean isActionAuthorized(Component component, Action action) {
if (action.equals(Component.RENDER)) {
RoleCheck privCheck = (RoleCheck) component.getMetaData(EditControlToolBar.priv);
if (privCheck != null) {
...
}
}
但是 getMetaData 给出错误
"绑定不匹配:泛型方法
getMetaData(MetaDataKey<M>)的Component类型不适用于参数 (MetaDataKey<RoleCheck>)。推断类型RoleCheck不是 有效替代有界参数“
任何帮助将不胜感激。谢谢
【问题讨论】:
标签: authorization wicket