Liferay developer documentation建议编写和用户权限助手类,例如BlogsPermission
。
当我尝试在portlet类中使用它时,我得到一个'java.lang.ClassNotFoundException。因此,问题是:我如何在自定义portlet中使用权限助手?
谢谢, 阿兰
修改
我在控制器中尝试了以下代码:
public boolean getCanUpdate(){
PermissionChecker permissionChecker = getThemeDisplay().getPermissionChecker();
try {
return DLFileEntryPermission.contains(permissionChecker, _fileEntry, ActionKeys.UPDATE);
} catch (Exception e) {
if (_log.isWarnEnabled()) {
_log.warn(String.format("could not check update permission for fileEntry[%d]", _fileEntry.getFileEntryId()));
e.printStackTrace();
}
return false;
}
}
在我的jsp中,我有以下内容:
<c:if test="${fileEntryDisplayBean.canUpdate}">
<li class="right">
<span class="toolbar-button standalone-button icon-pencil"
title="<liferay-ui:message key="edit"/>">
</span>
</li>
</c:if>
我得到了运行时错误
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.ClassNotFoundException: com.liferay.portlet.documentlibrary.service.permission.DLFileEntryPermission
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at org.bamboost.portlet.transversal.documents.FileEntryDisplayBean.getCanUpdate(FileEntryDisplayBean.java:95)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
...
答案 0 :(得分:0)
您可以使用此代码检查文件的权限:
_fileEntry.containsPermission(permissionChecker, ActionKeys.UPDATE);
对于像Group这样的某些实体,您可以找到位于portal-service.jar中的PermissionUtil
类,然后从您的portlet中获取。
示例:
GroupPermissionUtil