如何使用 JavaScript 函数重定向到 Struts2 中的另一个 jsp 页面

How to redirect to another jsp page in Struts2 by using JavaScript function

我想在打开 BeforeLogin 页面时使用 JavaScript 功能将我的 JSP 重定向到另一个页面。但是我收到以下错误消息。

The Struts dispatcher cannot be found. This is usually caused by using Struts tag without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag.

我不知道该怎么做。

BeforeLogin.jsp:

function newpage(){
    window.open("Login.jsp");
}

<body onLoad="goNewWin()">
<a href="BeforeLogin.jsp">click here to login</a>
</body>

Login.jsp:

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
<head>
<title>
   <s:text name="Login"/>
</title>
</head>
<body> ..... </body>

web.xml:

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

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

struts.xml:

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

<action name="login" class="com.action.LogonAction">
        <result name="input">Login.jsp</result>
</action>

产生此错误是因为您调用的 JSP 试图使用 Struts 标记,但没有先通过操作,因此找不到所需的底层结构。

Struts2是一个MVC框架,它的设计意味着一个新的请求必须通过一个(C)controller(action),然后通过一个(V)view(JSP).

您必须避免直接调用 JSPs,您必须调用登录操作,在其执行后将调度登录 JSP。

window.open("login.action");

创建无动作结果并使用它代替 JSP。

struts.xml:

<action name="showLogin">
        <result>Login.jsp</result>
</action>

JS:

function newpage(){
    window.open("showLogin");
}

解释:

错误说的很清楚

This is usually caused by using Struts tags without the associated filter

这意味着你里面有一个JSP和Struts标签,但是这个JSP没有被过滤器使用,因为它可能是一个欢迎文件,即index.jsp,错误代码文件,即404.jsp,配置在web.xml中。

在涉及映射到资源的任何过滤器或 servlet 之前,这些资源由 Web 服务器处理。

通常,欢迎文件包含指向有效操作的重定向代码,然后将其分派到可以具有 Struts 标记的 JSP。 不要在您的应用程序中直接使用 JSPs,而是使用操作。