簡體   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