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