我在Liferay 7.3.0中创建了一个PortletMVC,它在Tomcat 9中部署成功,但是当我在门户中拖动它时,我看不到它,显示的信息如下。
" You do not have the roles required to access this portlet.
"
图片
我检查了页面的权限是公开的,客人可以查看。
有谁能帮帮我,如果有什么问题,谢谢!这是classController。
@Component(
immediate = true,
property = {
"path=/login/login",
"javax.portlet.security-role-ref=guest,power-user,user",
},
service = StrutsPortletAction.class
)
public class BladePortletAction extends BaseStrutsPortletAction {
@Override
public void processAction(
StrutsPortletAction originalStrutsPortletAction,
PortletConfig portletConfig, ActionRequest actionRequest,
ActionResponse actionResponse)
throws Exception {....}
控制台显示。
[SecurityPortletContainerWrapper:235] Invalid portlet ID /app_WAR_app
请注意,从Liferay 7.0开始,BaseStrutsPortletAction机制不再适用于大多数portlet,因为Liferay不再使用Struts Actions,而是使用Liferay MVCCommands。
https:/help.liferay.comhcen-usarticles360029005292-Upgrading-Struts-Action-Hooks。https:/liferay.devforums-message_boardsmessage96576834。
我建议你使用Liferay Developer Studio,这样你可以在portlet开发过程中看到哪些classesmethods是可用的。
如果你需要进一步的帮助,我很乐意提供帮助,只是请你发来更详细的信息,比如:你想实现什么,以及更详细的步骤,比如。
等。亲切的问候,彼得
正如错误所说的那样。
[SecurityPortletContainerWrapper:235] Invalid portlet ID /app_WAR_app
你没有附加一个独特的 身份证 到您的 portlet,您应该知道在 Liferay 中,每个 portlet 都有一个唯一的 ID (KEY),使用属性 javax.portlet.name
以这段代码为例。
@Component(
immediate = true,
property = {
"javax.portlet.name=com_fr_bladeExamplePortlet"
},
properties = "OSGI-INF/portlet.properties",
service = Portlet.class
)
public class SearchPortlet extends MVCPortlet {
}
如果你使用的是Liferay DXP,我建议你使用的是: MVCPortlet,它简单、轻巧、有效、易用。
问候。