我已经定义了一个配置动作类,用于根据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
非常感谢, 奥里奥尔
答案 0 :(得分:5)
由于configuration.jsp
由名为86
的liferay portlet呈现,因此您需要使用<liferay-portlet:actionURL>
而不是简单<portlet:actionURL>
,因为您需要指定{ {1}}您需要从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
,则这是portlet-id,它是在部署portlet后由liferay生成的。 / p>
这是liferay从另一个(portletName="SelectRules_WAR_SelectRulesportlet"
)调用一个portlet(SelectRules
)的便捷方式。