在自定义portlet中使用核心liferay权限帮助程序类

时间:2013-09-17 11:55:01

标签: liferay liferay-6

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)
    ...

1 个答案:

答案 0 :(得分:0)

您可以使用此代码检查文件的权限:

_fileEntry.containsPermission(permissionChecker, ActionKeys.UPDATE);

对于像Group这样的某些实体,您可以找到位于portal-service.jar中的PermissionUtil类,然后从您的portlet中获取。

示例:

GroupPermissionUtil