You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Sam Wun <sw...@gmail.com> on 2009/06/21 08:34:19 UTC

Cannot retrieve mapping for action

Dear all,

I am a bit confused about generating mapping in the structs-config.xml
file (with Xdoclet).

Currently, I am getting this error:

....
15:55:47,890 INFO  [PluginPackageUtil:1391] Finished checking for
available updates in 2 ms
15:55:54,284 ERROR [PortletRequestDispatcherImpl:316]
org.apache.jasper.JasperException: javax.servlet.ServletException:
javax.servlet.jsp.JspException: Cannot retrieve mapping for action
/onlinepayment_portlet/order
org.apache.jasper.JasperException: javax.servlet.ServletException:
javax.servlet.jsp.JspException: Cannot retrieve mapping for action
/onlinepayment_portlet/order
        at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
...

-- In my OrderForm.java file, I have:
package com.XYZ.onlinepayment.portlet;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
 * Search query entry form.
 *
 * @struts.form name="OrderForm"
 */
....

-- In OrderAction.java file:
package com.XYZ.onlinepayment.portlet;

import java.io.IOException;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.XYZ.onlinepayment.portlet.OrderForm;

import com.liferay.portal.struts.PortletAction;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletConfig;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;


/** @struts.action name="OrderForm" path="/onlinepayment_portlet/order1"
 * scope="session"
 * input="/portlet/onlinepayment_portlet/order.jsp"
 *
 * @struts.action-forward
name="/onlinepayment_portlet/success_to_order2"
path="/onlinepayment_portlet/order2"
 */

public class OrderAction extends PortletAction{

...

-- xdoclet generated struts-config.xml file:

  <form-beans>

    <form-bean
      name="OrderForm"
      type="com.XYZ.onlinepayment.portlet.OrderForm"
    />

  </form-beans>

  <!-- ========== Action Mapping Definitions
=================================== -->
   <action-mappings>
    <action
      path="/onlinepayment_portlet/order1"
      type="com.XYZ.onlinepayment.portlet.OrderAction"
      name="OrderForm"
      scope="session"
      input="/portlet/onlinepayment_portlet/order.jsp"
      unknown="false"
      validate="true"
    >
      <forward
        name="/onlinepayment_portlet/success_to_order2"
        path="/onlinepayment_portlet/order2"
        redirect="false"
      />
    </action>

  </action-mappings>

       <message-resources parameter="resources.application"
null="true"></message-resources>
       <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
                <set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"></set-property>
       </plug-in>

-- my build.xml file:
<?xml version="1.0"?>

<project name="portlet" basedir="." default="deploy">
        <import file="../build-common-portlet.xml" />

        <target name="compile">

                <mkdir dir="docroot/WEB-INF/classes/" />
                <mkdir dir="docroot/WEB-INF/src/" />
                <path id="plugin-lib.classpath">
                        <pathelement
location="${app.server.classes.portal.dir}" />
                        <fileset dir="${app.server.lib.portal.dir}"
includes="*.jar" />
                        <pathelement location="docroot/WEB-INF/classes" />

                        <fileset dir="${env.XDOCLET_HOME}">
                        <include name="**/*.jar"/>
                        </fileset>
                </path>

                <taskdef name="webdoclet"
                        classname="xdoclet.modules.web.WebDocletTask"
                        classpathref="plugin.classpath">
                </taskdef>
                <webdoclet destdir="docroot/WEB-INF"
mergedir="metadata/web" excludedtags="@version,@author"
verbose="true">
                        <fileset dir="docroot/WEB-INF/src">
                                <include name="**/*Form.java" />
                                <include name="**/*Action.java" />
                                <include name="**/*Servlet.java" />
                        </fileset>
                        <deploymentdescriptor validatexml="true"
                                servletspec="2.3" sessiontimeout="60"
                                destdir="docroot/WEB-INF" distributable="false">
                        </deploymentdescriptor>
                        <strutsconfigxml validatexml="true" version="1.1"/>
                        <strutsvalidationxml/>
                </webdoclet>

                <javac
                        classpathref="plugin.classpath"
                        compiler="${javac.compiler}"
                        debug="${javac.debug}"
                        deprecation="${javac.deprecation}"
                        destdir="docroot/WEB-INF/classes"
                        nowarn="${javac.nowarn}"
                        srcdir="docroot/WEB-INF/src"

                />

                <antcall target="build-common-plugin.compile" />
        </target>

        <target name="build-lang">
                <antcall target="build-lang-cmd">
                        <param name="lang.dir"
value="docroot/WEB-INF/src/content/test" />
                        <param name="lang.file" value="Language" />
                </antcall>
        </target>
</project>

I know it seems messy. But I don't know how to instruct xdoclet
"automatically" generate correct mappings in struts-config.xml file.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org