无法调用Portlet的processAction

时间:2014-03-21 17:09:39

标签: liferay

我的game.jsp代码 -

<%@page import="java.io.Console"%>
<%@page import="com.liferay.portal.kernel.util.WebKeys"%>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>

<portlet:defineObjects />


<script>
    function updateGames() {
        document.getElementById("gameForm").submit();
    }
</script>

<portlet:actionURL name="sampleActionUrl" var="sampleActionUrl">
</portlet:actionURL>

<form id="gameForm" action="${sampleActionUrl}">
    <div onclick="updateGames()">CLICK HERE</div>
</form>

我的Portlet代码 -

package com.home;

import java.io.IOException;

public class Game extends GenericPortlet {

    @Override
    @RenderMode(name = "VIEW")
    protected void doView(RenderRequest request, RenderResponse response)
            throws PortletException, IOException {
        response.setContentType(request.getResponseContentType());
        PortletContext context = getPortletContext();
        PortletRequestDispatcher rd = context
                .getRequestDispatcher("/WEB-INF/jsp/game.jsp");
        System.out.println("Game.doView() >> rendering");
        rd.include(request, response);
    }

    @Override
    public void processAction(ActionRequest request, ActionResponse response)
            throws PortletException, IOException {
        System.out.println("Game.processAction() >> processAction");


    } 
 }

单击div时提交表单。 调用doView以呈现portlet,但不调用processAction。

我有什么遗漏的吗?

2 个答案:

答案 0 :(得分:1)

请使用以下代码并尝试

<portlet:actionURL name="sampleActionUrl" var="sampleActionUrl"> 
</portlet:actionURL>

<form id="gameForm" action="<%=sampleActionUrl.toString()%>" method="post">
    <input type="hidden" id="env" name="env"/>
    <div onclick="updateGames()">CLICK HERE</div>
</form>

<script>
    function updateGames() {
        document.getElementById("env").value = 'DEV';
        document.getElementById("gameForm").submit();
    }
</script>

如果您不使用JSTL,则可以使用&lt;%= sampleActionUrl.toString()%&gt;而不是$ {sampleActionUrl}

<强>更新 删除下面的代码

@RenderMode(name = "EDIT")

答案 1 :(得分:0)

首先检查您是否在WEB-INF\portlet.xml

中设置了以下内容
<portlet>

    ...

    <portlet-class>com.home.Game</portlet-class>

    ...

</portlet>