2016-03-29 20 views
1

BeforeLoginページを開いたときにJavaScript関数を使用してjspページを別のjspページにリダイレクトするとします。しかし、私は以下のエラーメッセージが表示されます。JavaScript関数を使用してStruts2の別のjspページにリダイレクトする方法

Strutsディスパッチャが見つかりません。これは、通常、関連するフィルタなしでStrutsタグを使用することによって発生します。 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:あなたが最初のアクションを通過したことなく、Strutsのタグを使用しようとしているJSPを呼び出し、そのために必要な基本的な構造を見つけていないので、

<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"); 
} 

説明:はっきり

こと

エラーを語ります

これは、通常はそれができるので、それは、あなたがその中にJSPとStrutsタグを持っていることを意味するが、このJSPがフィルタで使用されていない関連するフィルタ

なしのStrutsタグを使用することによって引き起こされウェルカムファイル、すなわちindex.jsp、エラーコードファイル、404.jspweb.xmlで設定されています。

これらのリソースは、リソースにマップされたフィルタまたはサーブレットが関与する前に、Webサーバーによって処理されます。

通常、ウェルカムファイルには有効なアクションへのリダイレクトコードが含まれており、有効なアクションがStrutsタグを持つJSPにディスパッチされます。 アプリケーションで直接JSPを使用しないで、代わりにアクションを使用します。

1

このエラーが作成されます。

Struts2は、新しいリクエストが(C)コントローラ(アクション)を通過し、次に(V)ビュー(JSP)を介してレンダリングされる必要があることを意味するMVCフレームワークです。

JSPを直接呼び出すことを避けなければなりません。代わりに、ログインアクションを呼び出して、その実行後にログインJSPをディスパッチする必要があります。

window.open("login.action"); 
関連する問題