我之前已经意识到这个问题,但似乎并不是一个完整的答案,所以我会询问具体细节和尝试过的内容。在其他论坛中,它也被多次询问,没有答案,也没有完整的细节。
我已经能够使用' liferay-ui:discussion'添加评论(讨论)到我的自定义portlet。 Liferay中的taglib 6.1.20在搜索之后,我终于使用以下设置使其工作:
<portlet:actionURL
var="discussionURL"
name="addDiscussion"/>
<liferay-ui:discussion
className="<%= Announcement.class.getName() %>"
classPK="<%= announcement.getPrimaryKey() %>"
formAction="<%= discussionURL %>"
formName="fm2"
ratingsEnabled="<%= false %>"
redirect="<%= currentURL %>"
subject="<%= announcement.getHeadline() %>"
userId="<%= themeDisplay.getUserId() %>"
/>
注意:类扩展了MVCPortlet
public void addDiscussion(ActionRequest actionRequest, ActionResponse actionResponse){
try {
//invokeTaglibDiscussion(actionRequest, actionResponse);
PortletActionInvoker.processAction("com.liferay.portlet.messageboards.action.EditDiscussionAction", null, actionRequest, actionResponse);
} catch (Exception e) {
_log.error("There was an Error adding a comment to the Announcement");
}
}
由于类扩展了MVCPortlet,我尝试使用 invokeTagLibDiscussion ,但没有更改权限结果。这来自 Liferay In Action 一书(这是一个很好的信息来源)。所以我尝试使用许多文章中提到的 PortletActionInvoker.processAction 方法。
所以,现在我已经在我的自定义portlet中添加了一个工作讨论,但事实证明任何人可以编辑任何其他个人以前的评论。显然,我无法启动具有该安全问题的portlet。再次进一步研究,我发现了以下答案&#39; ...
非常感谢任何帮助,因为这是我的自定义portlet项目的最后一个组件,阻碍了我将它发布到我的用户组。
提前致谢。