Tomcat выдает ошибку: нет действия, сопоставленного с именем действия в Struts 2

Пытался изменить местоположение struts.xml, но все еще получаю сообщение об ошибке. Кроме того, пространство имен используется в URL-адресе, по-прежнему получая ошибку.

struts.xml:

 <?xml version="1.0" encoding="UTF-8"?>    
 <!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">   

   <struts>

        <package name="default" namespace="/program" extends="struts-default">

        <action name="getTwo" class="StrutsTwopack.ProgramTwo">
            <result>/success.jsp </result>
            <result>/failure.jsp</result>
        </action>   

        </package>

   </struts>

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>StrutsStart</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>


  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>

</filter>


<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>



</web-app>

класс действия:

package ninad.Struts2One;

import service.ProgramBest;

public class ProgramOneAction {

    private String bestprog;
    private String Lang;

    public String execute()
    {
        ProgramBest pb = new ProgramBest();
        setBestprog(pb.giveBestProgram(getLang()));
        System.out.println(bestprog);
        //System.out.println(getLang());
        return "success";
    }

    public String getBestprog() {
        return bestprog;
    }

    public void setBestprog(String bestprog) {
        this.bestprog = bestprog;
    }

    public String getLang() {
        return Lang;
    }

    public void setLang(String Lang) {
        this.Lang = Lang;
    }


}

Класс обслуживания:

package service;

public class ProgramBest {

    public String giveBestProgram(String lang) {
        if (lang.equals("java")){
        return "My code";
        }
        else
            return "no other code";
    }

}

URL-адрес, который я ввожу в окне Apache:

http://localhost:8484/StrutsStart/program/ProgramOne.action

Ошибка, которую я получаю:

There is no Action mapped for action name ProgramOne. - [unknown location]

person ninad    schedule 13.08.2013    source источник
comment
Где находится struts.xml?   -  person Roman C    schedule 13.08.2013
comment
это в срк. я также пытался переместить его в папку web-inf, но все равно не работал   -  person ninad    schedule 14.08.2013
comment
Не зная, где он развернут, он не имеет значения.   -  person Dave Newton    schedule 14.08.2013


Ответы (1)


Вы разместили вопрос

«Нет действия, сопоставленного для имени действия getTwo» в struts2

действие getTwo сопоставлено с классом StrutsTwopack.ProgramTwo в пространстве имен /program. Если ошибка верна, это означает, что в URL-адресе указан неправильный класс или пространство имен.

Что я должен делать???

Опубликуйте SSCCE или решите сами, какая неправильная версия лучше разрешима.

person Roman C    schedule 13.08.2013
comment
Добавлен рабочий код. пожалуйста, проверь это - person ninad; 14.08.2013
comment
@user2679726 user2679726 ProgramOne — это еще одно действие, не сопоставленное с вашим кодом. - person Roman C; 14.08.2013