2016-03-29 83 views
1

我想在打開BeforeLogin頁面時使用JavaScript函數將我的jsp重定向到另一個jsp頁面。但是我收到了錯誤信息。如何使用JavaScript函數重定向到Struts2中的另一個jsp頁面

無法找到Struts調度程序。這通常是由於使用沒有關聯過濾器的Struts標籤造成的。 Struts標籤只有在請求通過其servlet過濾器時纔可用,該過濾器初始化此標籤所需的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> 

回答

0

創建無動作結果並使用它來代替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中配置。

這些資源由Web服務器在涉及映射到資源的任何過濾器或servlet之前處理。

通常歡迎文件包含重定向代碼到一個有效的動作,然後調度到一個可以有Struts標籤的JSP。 不要直接在應用程序中使用JSP,而是使用操作。

1

因爲你調用一個嘗試使用Struts標籤不通過訴訟已通過第一,因此沒有找到所需的基礎結構的JSP創建此錯誤。 Struts2是一個MVC框架,它的設計意味着一個新的請求必須通過(C)ontroller(action),然後通過(V)view(JSP)進行渲染。

您必須避免直接調用JSP,您必須調用登錄操作,在執行操作後將調度登錄JSP。

window.open("login.action"); 
相關問題