Выполнение и ожидание перехватчика в struts2

Я получаю сообщение об ошибке, т. е.
ВНИМАНИЕ: не удалось найти токен, сопоставленный с токеном имени токена
Я не понял, пожалуйста, скажите мне, почему я получаю эту ошибку и как ее решить это.
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="interceptorExecAndWait" extends="struts-default">
        <action name="execAndWaitInterceptor" class="com.interceptor.execandwait.action.ExecuteAndWait">
            <!-- <interceptor-ref name="defaultStack"/>  -->
            <interceptor-ref name="completeStack"/>
                    <interceptor-ref name="execAndWait">    
                                    <param name="delay">1000</param>    
                    </interceptor-ref>  
            <!-- <interceptor-ref name="execAndWait"/> -->
            <result name="success">/welcome.jsp</result>
            <result name = "wait">/wait.jsp </result>
            <result name="error">/error.jsp</result>
        </action>
    </package>
</struts>

ExecuteAndWait.java

public class ExecuteAndWait {

    String userName;
    String password;

    public String execute() throws InterruptedException {

        if (userName.equals("Admin") && password.equals("user")) {
            System.out.println("ok");
            Thread.sleep(5000);
            return "success";
        } else {
            return "error";
        }
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }


}

Дайте мне знать, где я делаю ошибки
Спасибо :)


person codenow123    schedule 26.11.2019    source источник
comment
stackoverflow.com/a/18810886/573032   -  person Roman C    schedule 27.11.2019


Ответы (2)


Добавлять

<interceptor-ref name="completeStack"/>
              <interceptor-ref name="execAndWait">
                <param name="delay">1000</param>
                <param name="delaySleepInterval">500</param>
            </interceptor-ref>

в вашем struts.xml, т. е.

<package name="interceptorExecAndWait" extends="struts-default">
        <action name="execAndWaitInterceptor" class="com.interceptor.execandwait.action.ExecuteAndWait">
              <interceptor-ref name="completeStack"/>
              <interceptor-ref name="execAndWait">
                <param name="delay">1000</param>
                <param name="delaySleepInterval">500</param>
            </interceptor-ref>
            <result name="success">/welcome.jsp</result>
            <result name = "wait">/wait.jsp </result>
            <result name="error">/error.jsp</result>
        </action>
    </package>

Включите includeParams="all" и http-equiv="Refresh" в тег meta в вашем файле wait.jsp, т. е.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Refresh" content="5;url=<s:url includeParams="all" />">
<title>Waiting</title>
</head>
<body>

    <div align="center">
        <h2>Please wait while we verify your credentials.. </h2>
    </div>

</body>
</html>
person venkat    schedule 27.11.2019

Вы не показываете свой метатег refresh, но, скорее всего, он не включает includeParams="all" в тег <s:url>, например,

<head>
  <title>Please wait</title>
  <meta http-equiv="refresh" content="5;url=<s:url includeParams="all" />"/>
</head>
person Dave Newton    schedule 26.11.2019