一尘不染

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

jsp

我想在打开BeforeLogin页面时使用JavaScript函数将jsp重定向到另一个jsp 页面。但我得到以下错误信息。

找不到Struts调度程序。这通常是由于使用不带关联过滤器的Struts标记引起的。仅当请求已通过其Servlet过滤器(该过滤器初始化此标签所需的Struts调度程序)时,Struts标记才可用。

我不确定该怎么办。

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>

阅读 217

收藏
2020-06-08

共1个答案

一尘不染

创建不采取行动的结果,并使用它代替JSP。

struts.xml:

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

JS:

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

说明:

该错误清楚地表明

这通常是由于使用不带相关过滤器的Struts标记引起的

这意味着您内部有一个JSP和Struts标记,但是过滤器不使用此JSP,因为它可能是一个欢迎文件,即index.jsp错误代码文件,即404.jsp在中配置的web.xml

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

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

2020-06-08