繁体   English   中英

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

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

当我打开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>

产生此错误的原因是,您正在调用一个试图使用Struts标记的JSP,而没有先通过一个动作,因此找不到所需的基础结构。

Struts2是一个MVC框架,该设计意味着新的请求必须通过(C)托管程序(动作),然后通过(V)iew(JSP)进行呈现。

您必须避免直接调用JSP,而必须调用login操作,该操作执行后将分派登录JSP。

window.open("login.action");

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

struts.xml:

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

JS:

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

说明:

该错误清楚地表明

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM