Canot retrieve mapping for actionの問題は解決します.
7248 ワード
strutsのformタグは一つのページのフォームを定義していますが、このstrutsタグはactionの値からmodule configのaction mappingを検索し、action mappingの値からaction formを初期化する必要があります.したがって、formタグにはmodule configを取得する必要がある.ここでは、どのmodule configを取得するかがformタグが正常に動作するかどうかの鍵となります.module configの取得値が正しくないと、対応するaction mappingが見つからないか、あるいは見つけられないかもしれませんが、正しいaction mappingではありません.これにより、Canot retrieve mapping for{action name}のエラーまたは他の予期せぬエラーが発生します.formマークのlookup方法には、まずrequestから現在のmodule configを取得するための検索方法が含まれています.見つけられなかったら、servlet contextからデフォルトのmodule configを取得します.アクションServletの初期化方式を分析してみると、アクションServletは初期化されたmodule configをそれぞれservlet contextの属性の中に保存しており、その中の属性名はGlobals.MODULE(u)であることがわかった.KEY+prefixですが、requestオブジェクトの現在のmodule configはどうやって来ましたか?これは、アクションServletが要求を取得した後、要求されたurlとservlet contextに保存されているmodule prefixとをマッチングし、マッチングが成功すれば、属性名をGlobals.MODULE(u)と呼ぶ.KEY+「マッチング成功prefix」のmodule configは現在のmodule configとして戻ります.このプロセスはActServletのprocess方法に現れます.select moduleの時に、上記の規則に基づいて現在のmodule configを選択し、requestの属性Globals.MODULE唴に保存します.KEYまた、例をレクェストオブジェクトに転送します.上記の分析から、formを含むjspページが、正しく自分を一つのmoduleに関連付けるためには、現在のmodule configオブジェクトをrequest要求に置いておく必要がありますが、module configからrequestまで要求する動作は、ActServletで行われます.したがって、ページはActonを処理した後(actionを処理する過程で、actionのurlによって現在のmoduleにマッチし、requestに保存します.)、そしてredirect=falseを通じてjspページにリダイレクトしてこそ、このjspページが正しくmoduleに関連します.そうでなければ、デフォルトmoduleに関連します.アドレスバーに直接jspのurlを入力する場合、すべてのjspファイルはデフォルトのmodule configに関連します.
from:http://www.blogbus.com/blogbus/blog/diary.php?diaryid=139866
今日書いたシステム登録モジュールを既存のモジュールに入れてみました.彼が書いた時はテストの要素がありますので、私達のプロジェクトの構成によって書かれていませんでした.私達のモジュールによって構成を区分していません.加えてモジュール情報を再配置しました.結果は正常に運行できませんでした.エラーを表示します.「cannot retrieve action mapping」 .九牛二虎の力を廃しても解決できないです.web.xml、struts-config、モジュール配置、全部正常に見えますが、運行できないです.どこに問題があったのか分かりません.夜は残業すると思っています.ご存知のように、鉄の靴を踏み潰してもいいところがないです.柳暗花明さんはまた村にいます.googleでキーワードの「action mapping」を検索します.最初のリンクが問題の答えだったのです.
要するに、問題の原因は、strutsがactionに対する要求を初めて受けたからです.この要求のurlの経路情報を抽出し、該当モジュールのmapping情報を要求に設定します.モジュールに入る時、最初に訪れたのはjspページです.このjspページでモジュールの一つのactionを提出すると、action mappingが見つからない場合があります.このモジュールに入る時、アクセスするのはjspページです.このモジュールのいずれのactionもアクセスされていないので、strutsのアクションセットはまだこのモジュールのmappingを要求に設定できていません.このモジュールのactionは見つけられません.
そこで、Jspへの直接的なアクセスを避けるために、アクセスするならactionでforwardという約束を引き出しました.面倒くさいように見えますが、安全性と丈夫性が向上します.
from:http://dev.csdn.net/article/55/55476.shtm
Struts 1.1はマルチモジュールの開発に対応し、myEclipseのWeb Apple Projectに新しいmodule(New->Struts 1.1 Module)を作成し、Form Action Forwardを順次追加します. (New-).Struts 1.1アクション、Form&JSP).myEclipseは自分の入れたばかりのFormが見つからない場合があります.手動で追加すればいいです.たいしたことはありません.myEclipseのweb.xmlテンプレートは標準に合わないので、手動で変更します.TLDファイルもあまり正しくないようです.自分のやったプロジェクトのTLDで代替できます.
次は長い間私を苦しめる二つの問題です.
1)私達のsecurityモジュールにあれば path="/UserSecurity Check" type=「comp.scs.presentation.security.UserSecurity CheckAction」 name=「UserLoginForm」scope=「request」 input=“/init.do”>
この例では、manmenu.jspの前に/があります.アクションServletは現在のmoduleの中でこのjspを探しています.つまり、manmenu.jspは/%webroot%/security/のディレクトリの下に置く必要があります.
2)strutsのformタグは1ページのフォームを定義していますが、このstrutsタグはactionの値に基づいてmodule configのaction mappingを検索し、action mappingの値によってaction formを初期化する必要があります.したがって、formタグにはmodule configを取得する必要があります.ここでは、どのmodule configを取得するかがformの作業のキーとなります.module configの取得値が正しくないと、Canot retrieve mapping for{action name}のエラーが発生します.検索方法はまずrequestから現在のmodule configを取得します.見つけられなかったら、servlet contextからデフォルトのmodule configを取得します.
現在のstruts frame eworkの実現は、アクションServletが正しくrequestの属性Globals.MODULEuKEYに値を付けた後、その後のformを含むjspページだけがstruts frame orkによって正確に対応するmodule configgeフックと対応することができます.オン、actionServletは上記の準備作業をする機会がない(web containerは直接jsp要求を処理しますので、actionServletに転送しません).その後jspのformを処理すると、default module configからこのactionMappingを探します.(requestの中のmodule specfic configは依然として空ですので、defaultから探すしかないです)、普通はこのような探しは結果がないので、最後にframe eworkはCanot retrieve mapping for ThisActのエラーに戻ります.
結論として、各moduleにアクセスする最初のページは、対応するmodule configを搭載し、cacheするために、actionによって要求されるべきである.
<script type=「text/javascript」><!--google uduclient=「pub-3482651672910」/*468 x 60、個人ブログ*/google uduslot=「20646406163」;google uduwidth=468;google/scudhttp=468.http://pagead2.googlesyndication.com/pagead/show_ads.js「type=」text/javascript"google uplrotectAndRun(&rds;adsucore.googlegleglanderaud& rdquo;google;google;googledle;google;googledle;googledle;googledle;
2階
abin103 2008-04-14
引用
私も同じ問題にぶつかりました.
急いでいますが、あなたの文章を読みすぎて、分かりますか?
私も先に訪問しました.jspの似たようなものはjspにロゴがあります.
action
そして現れます
Canot
retrieve
mapping
for
action/addProductType
[email protected]ストリームの追加を歓迎します
ありがとうございます.
1階
navaa 2007-1-28
引用
時には何もしない局部の刷新を通じてアプリケーションのmodule config'ブラシを別のアプリケーションに戻すことができます.
=================================================================================
この問題を解決した後の配置.
struts-config.xml
.jsp
from:http://www.blogbus.com/blogbus/blog/diary.php?diaryid=139866
今日書いたシステム登録モジュールを既存のモジュールに入れてみました.彼が書いた時はテストの要素がありますので、私達のプロジェクトの構成によって書かれていませんでした.私達のモジュールによって構成を区分していません.加えてモジュール情報を再配置しました.結果は正常に運行できませんでした.エラーを表示します.「cannot retrieve action mapping」 .九牛二虎の力を廃しても解決できないです.web.xml、struts-config、モジュール配置、全部正常に見えますが、運行できないです.どこに問題があったのか分かりません.夜は残業すると思っています.ご存知のように、鉄の靴を踏み潰してもいいところがないです.柳暗花明さんはまた村にいます.googleでキーワードの「action mapping」を検索します.最初のリンクが問題の答えだったのです.
要するに、問題の原因は、strutsがactionに対する要求を初めて受けたからです.この要求のurlの経路情報を抽出し、該当モジュールのmapping情報を要求に設定します.モジュールに入る時、最初に訪れたのはjspページです.このjspページでモジュールの一つのactionを提出すると、action mappingが見つからない場合があります.このモジュールに入る時、アクセスするのはjspページです.このモジュールのいずれのactionもアクセスされていないので、strutsのアクションセットはまだこのモジュールのmappingを要求に設定できていません.このモジュールのactionは見つけられません.
そこで、Jspへの直接的なアクセスを避けるために、アクセスするならactionでforwardという約束を引き出しました.面倒くさいように見えますが、安全性と丈夫性が向上します.
from:http://dev.csdn.net/article/55/55476.shtm
Struts 1.1はマルチモジュールの開発に対応し、myEclipseのWeb Apple Projectに新しいmodule(New->Struts 1.1 Module)を作成し、Form Action Forwardを順次追加します. (New-).Struts 1.1アクション、Form&JSP).myEclipseは自分の入れたばかりのFormが見つからない場合があります.手動で追加すればいいです.たいしたことはありません.myEclipseのweb.xmlテンプレートは標準に合わないので、手動で変更します.TLDファイルもあまり正しくないようです.自分のやったプロジェクトのTLDで代替できます.
次は長い間私を苦しめる二つの問題です.
1)私達のsecurityモジュールにあれば
この例では、manmenu.jspの前に/があります.アクションServletは現在のmoduleの中でこのjspを探しています.つまり、manmenu.jspは/%webroot%/security/のディレクトリの下に置く必要があります.
2)strutsのformタグは1ページのフォームを定義していますが、このstrutsタグはactionの値に基づいてmodule configのaction mappingを検索し、action mappingの値によってaction formを初期化する必要があります.したがって、formタグにはmodule configを取得する必要があります.ここでは、どのmodule configを取得するかがformの作業のキーとなります.module configの取得値が正しくないと、Canot retrieve mapping for{action name}のエラーが発生します.検索方法はまずrequestから現在のmodule configを取得します.見つけられなかったら、servlet contextからデフォルトのmodule configを取得します.
現在のstruts frame eworkの実現は、アクションServletが正しくrequestの属性Globals.MODULEuKEYに値を付けた後、その後のformを含むjspページだけがstruts frame orkによって正確に対応するmodule configgeフックと対応することができます.オン、actionServletは上記の準備作業をする機会がない(web containerは直接jsp要求を処理しますので、actionServletに転送しません).その後jspのformを処理すると、default module configからこのactionMappingを探します.(requestの中のmodule specfic configは依然として空ですので、defaultから探すしかないです)、普通はこのような探しは結果がないので、最後にframe eworkはCanot retrieve mapping for ThisActのエラーに戻ります.
結論として、各moduleにアクセスする最初のページは、対応するmodule configを搭載し、cacheするために、actionによって要求されるべきである.
<script type=「text/javascript」><!--google uduclient=「pub-3482651672910」/*468 x 60、個人ブログ*/google uduslot=「20646406163」;google uduwidth=468;google/scudhttp=468.http://pagead2.googlesyndication.com/pagead/show_ads.js「type=」text/javascript"
2階
abin103 2008-04-14
引用
私も同じ問題にぶつかりました.
急いでいますが、あなたの文章を読みすぎて、分かりますか?
私も先に訪問しました.jspの似たようなものはjspにロゴがあります.
action
そして現れます
Canot
retrieve
mapping
for
action/addProductType
[email protected]ストリームの追加を歓迎します
ありがとうございます.
1階
navaa 2007-1-28
引用
時には何もしない局部の刷新を通じてアプリケーションのmodule config'ブラシを別のアプリケーションに戻すことができます.
=================================================================================
この問題を解決した後の配置.
struts-config.xml
<action-mappings >
<action
attribute="guestbookForm"
input="/input.jsp"
name="guestbookForm"
parameter="method"
path="/guestbook"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" validate="false" />
</action-mappings>
.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<html:html xhtml="true" lang="true">
<body>
<html:form action="/guestbook.do
?method=save" onsubmit="return validateUserForm(this)">
<html:hidden property="method" value="save" />
username:<html:text property="name" ></html:text>
<html:errors property="name" />
<html:submit value="提交">
</html:submit>
<html:javascript formName="UserForm" />
</html:form>
</body>
</html:html>