4

我已经定义了一个配置操作类,用于加载基于 drools ( liferay-portlet.xml) 的现有 portlet 的配置:

<configuration-action-class>com.liferay.drools.action.ConfigurationActionImpl</configuration-action-class>

这个类是 processAction 类:

public class ConfigurationActionImpl extends DefaultConfigurationAction {

    @Override
    public void processAction(

现在,我想添加另一个带有行的表单(在同一个 config.jsp 页面内)。正是我想从所有这些行中调用一个不同的类(对 SelectRules.java 类的调用):

<%
ResultRow row = (ResultRow)request.getAttribute(WebKeys.SEARCH_CONTAINER_RESULT_ROW);
IRRule myRule = (IRRule)row.getObject();
String name = IRRule.class.getName();
String primKey = String.valueOf(myRule.getPrimaryKey());
%>

<liferay-ui:icon-menu>
    <portlet:actionURL name="selectRule" var="selectURL">
        <portlet:param name="resourcePrimKey" value="<%=primKey %>" />
    </portlet:actionURL>
    <liferay-ui:icon image="checked" message="SelectRule" url="<%=selectURL.toString() %>" />
</liferay-ui:icon-menu>

my portlet.xml我定义了以下 portlet 类:

<portlet-class>com.myown.oriol.selectrules.portlet.SelectRules</portlet-class>

如您所见,主要问题是 actionURL 正在寻找配置操作类,但我真正想要的是调用名为 selectRules 的 portlet-class(SelectRules.java) 函数。

我要调用的已定义类 selectRules 以这种方式开始:

public class SelectRuleClass extends MVCPortlet {

    public void selectRule(
            PortletConfig portletConfig, ActionRequest actionRequest,
            ActionResponse actionResponse)

你知道我需要解决这个问题吗?考虑到 configurationActionImpl.java 已经由另一个人定义,我不知道如何将这两个类与两个不同的扩展合并。

在简历中。我需要在选择要使用的规则时从 configuration.jsp 调用函数 selectRule。但是配置操作类是加载这个现有 portlet 所需的另一个。在选择规则时出现此错误...

86 does not have any paths specified

非常感谢你,奥里奥尔

4

1 回答 1

5

由于configuration.jsp是由具有名称的 liferay portlet 呈现的,因此86您需要使用<liferay-portlet:actionURL>而不是简单的,<portlet:actionURL>因为您需要指定portlet-name需要调用谁的操作方法configuration.jsp,如下所示:

<liferay-ui:icon-menu>
    <liferay-portlet:actionURL name="selectRule" var="selectURL" portletName="SelectRules_WAR_SelectRulesportlet">
        <liferay-portlet:param name="resourcePrimKey" value="<%=primKey %>" />
    </liferay-portlet:actionURL>
</liferay-ui:icon-menu>

如果您已定义标签<portlet-name>SelectRules</portlet-name>的属性portletName将具有 value portletName="SelectRules_WAR_SelectRulesportlet",则这是部署 portlet 后由 liferay 生成的 portlet-id。

SelectRules这是 liferay从另一个 ( )调用一个 portlet ( ) 的便捷方式86

于 2013-06-14T13:40:40.810 回答