Liferay:创建一个 portlet 配置页面。如何提供正确的 jsp 路径?
Liferay: creating a portlet configuration page. How to provide correct jsp path?
我想为 liferay portlet 创建一个配置页面。
来自portlet.xml
的部分代码
<portlet-name>example-config</portlet-name>
<display-name>example-to-delete</display-name>
<portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
<init-param>
<name>contextConfigLocation</name>
<value>/WEB-INF/spring-context/portlet/example-config-portlet.xml</value>
</init-param>
<init-param>
<name>config-jsp</name>
<value>/WEB-INF/html/jsp/config.jsp</value>
</init-param>
ConfigurationActionImpl
public class ConfigurationActionImpl implements ConfigurationAction {
@Override
public void processAction(PortletConfig portletConfig, ActionRequest actionRequest,
ActionResponse actionResponse) throws Exception {
}
@Override
public String render(PortletConfig portletConfig, RenderRequest renderRequest,
RenderResponse renderResponse) throws Exception {
System.out.println("RENDER CALL");
return "/html/jsp/config.jsp";
}
}
liferay-portlet.xml
<portlet>
<portlet-name>example-to-delete</portlet-name>
<icon>/icon.png</icon>
<configuration-action-class>by.example.ConfigurationActionImpl</configuration-action-class>
<instanceable>false</instanceable>
</portlet>
当我 运行 它时,我在配置选项中有一个选项卡(渲染方法有效,我在控制台中看到消息 "RENDER CALL"),但是我的 jsp 没有显示,没有错误和警告。我尝试了不同的方法来提供 jsp 路径,但没有进展。我该怎么办?
如果配置操作 class 扩展 DefaultConfigurationAction
,在 portlet.xml 中指定 JSP 路径作为初始化参数就足够了(configTemplate
和 config-jsp
是同样有效的名称)。您不必重写 render
方法。
在您的情况下,配置操作 class 不会扩展 DefaultConfigurationAction
,因此初始化参数无用。
JSP 路径必须始终从 class 路径根开始 - 即。从 /WEB-INF
开始,在那里放了 JSP。
有关 portlet 配置的完整说明,请参阅 Developer's Guide。
您还可以使用 Spring Portlet MVC 框架(按照问题建议使用)开发可配置的 portlet。这意味着为编辑 portlet 模式创建一个专用控制器 (@Controller @RequestMapping("edit")
)。使用 Spring,您可以以与 portlet 视图模式相同的方式实现配置(即使用相同的 JSP 标记、表单绑定、验证以及 Spring 框架带来的所有便利).
我想为 liferay portlet 创建一个配置页面。
来自portlet.xml
的部分代码<portlet-name>example-config</portlet-name>
<display-name>example-to-delete</display-name>
<portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class>
<init-param>
<name>contextConfigLocation</name>
<value>/WEB-INF/spring-context/portlet/example-config-portlet.xml</value>
</init-param>
<init-param>
<name>config-jsp</name>
<value>/WEB-INF/html/jsp/config.jsp</value>
</init-param>
ConfigurationActionImpl
public class ConfigurationActionImpl implements ConfigurationAction {
@Override
public void processAction(PortletConfig portletConfig, ActionRequest actionRequest,
ActionResponse actionResponse) throws Exception {
}
@Override
public String render(PortletConfig portletConfig, RenderRequest renderRequest,
RenderResponse renderResponse) throws Exception {
System.out.println("RENDER CALL");
return "/html/jsp/config.jsp";
}
}
liferay-portlet.xml
<portlet>
<portlet-name>example-to-delete</portlet-name>
<icon>/icon.png</icon>
<configuration-action-class>by.example.ConfigurationActionImpl</configuration-action-class>
<instanceable>false</instanceable>
</portlet>
当我 运行 它时,我在配置选项中有一个选项卡(渲染方法有效,我在控制台中看到消息 "RENDER CALL"),但是我的 jsp 没有显示,没有错误和警告。我尝试了不同的方法来提供 jsp 路径,但没有进展。我该怎么办?
如果配置操作 class 扩展 DefaultConfigurationAction
,在 portlet.xml 中指定 JSP 路径作为初始化参数就足够了(configTemplate
和 config-jsp
是同样有效的名称)。您不必重写 render
方法。
在您的情况下,配置操作 class 不会扩展 DefaultConfigurationAction
,因此初始化参数无用。
JSP 路径必须始终从 class 路径根开始 - 即。从 /WEB-INF
开始,在那里放了 JSP。
有关 portlet 配置的完整说明,请参阅 Developer's Guide。
您还可以使用 Spring Portlet MVC 框架(按照问题建议使用)开发可配置的 portlet。这意味着为编辑 portlet 模式创建一个专用控制器 (@Controller @RequestMapping("edit")
)。使用 Spring,您可以以与 portlet 视图模式相同的方式实现配置(即使用相同的 JSP 标记、表单绑定、验证以及 Spring 框架带来的所有便利).