我正在为Liferay 6.2开发一个portlet,我正在使用DDMStructures。当然我需要检查权限。我注意到当我创建一个结构 - 在Documents and Media portlet中的文档类型时,我设置了它的初始状态的权限。 (例如:访客可以看到选择的文档类型)一切都很好,我的portlet知道这个权限并使用它。问题是,当我将此权限更改为guest虚拟机不可见时,此设置不会对我的portlet进行任何更改。它仍然使用初始权限值。
我正在尝试通过两种方法检查权限: 1.通过PermissionChecker
pCh.hasPermission(
structure.getGroupId(), DDMStructure.class.getName(), structure.getStructureId(),
ActionKeys.VIEW)
DDMStructureServiceUtil.getStructures(themeDisplay.getScopeGroupId());
与...相同
DDMStructureServiceUtil.getStructures(themeDisplay.getScopeGroup().getPrimaryKey());
我检查权限有问题,或者是错误? 谢谢。
加入:
我创建了一个包含简单代码的新portlet,以确定此问题是否不是由我原始portlet中的任何其他方法引起的。这是调用getStructures方法的代码。结果仍然相同。 (请参阅问题示例的评论)
public class NewPortlet extends MVCPortlet {
@Override
public void doView(RenderRequest renderRequest,
RenderResponse renderResponse) {
List allwithViewPerms = new ArrayList();
ThemeDisplay themeDisplay = (ThemeDisplay) renderRequest
.getAttribute(WebKeys.THEME_DISPLAY);
try {
allwithViewPerms = DDMStructureServiceUtil.getStructures(themeDisplay.getScopeGroupId());
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (DDMStructure ddmStructure : allwithViewPerms) {
System.out.println(ddmStructure.getNameCurrentValue());
}
System.out.println(allwithViewPerms.size());
try {
super.doView(renderRequest, renderResponse);
} catch (IOException | PortletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
与scopeGroup的getPrimaryKey()相同。