[英]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.