在家自学S2SH,从网上找了一个OA项目的视频教程,在做权限列表的时候遇到报错
WARNING: Could not find method [#session.user.hasPrivilegeByName(name)]
在jsp页面中的代码如下,其中user已经放到session中了。
<s:if test="#session.user.hasPrivilegeByName(name)">
User类中有如下方法:
public boolean hasPrivilegeByName(String name) {
// 超级管理有所有的权限
if (isAdmin()) {
return true;
}
// 普通用户要判断是否含有这个权限
for (Role role : roles) {
System.out.println("======"+role.getName());
for (Privilege priv : role.getPrivileges()) {
if (priv.getName().equals(name)) {
return true;
}
}
}
return false;
}
为什么不写上面for循环的时候没有问题,写了之后就提示方法找不到了?谢谢各位前辈。
------解决方案--------------------
OGNL调用方法不是这么调的,建议你使用静态方法调用:
<s:if test="@com.xxx.t.action.xxxAction@methodName(name)">
或者你写一个BaseAction,让你的Action继承BaseAction。然后直接在BaseAction写一个普通方法,你用OGNL可以直接写方法名调用。