「Struts トラブルシューティング」の編集履歴(バックアップ)一覧はこちら

Struts トラブルシューティング」(2005/08/22 (月) 16:38:27) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

<ul> <li><b>フォワード先が空白になる</b><br> ・mapping.findForward()で指定したフォワード名がstruts-config.xmlのActionの定義に書かれていない。<br> ・Actionがexecuteメソッドをオーバーライドしていない。またはメソッド名が間違っているため、正しくオーバーライドできていない。<br> ・Actionのexecuteメソッドのシグネチャが異なるため、正しくオーバーライドできていない。</li> </ul> <br> <ul> <li><b>JSP文書にアクセスするとJavaScriptエラー</b><br> ・html:formタグのfocus属性に書かれた名前の入力欄(プロパティ)が存在しない。</li> </ul> <br> <ul> <li><b>サーブレット action が利用できません</b><br> struts-config.xmlの構文エラー、またはcontrollerタグやpluginタグに記述したクラスがロードできないなどの理由で、ActionServletの初期化に失敗している。→サーブレットコンテナのログを見て、エラー原因を解消します。</li> </ul> <br> <ul> <li><b>javax.servlet.ServletException: Exception creating bean of class ...:{1}</b><br> ・struts-config.xmlのform-beanに書いたクラスが存在しない。<br> ・struts-config.xmlのform-beanに書いたクラスがActionFormを継承していない。<br> ・struts-config.xmlのform-beanに書いたクラスがインスタンス化できない(例:抽象クラス、引数のないpublicのコンストラクタがない)<br> ・struts-config.xmlのform-beanに記述するDynaActionFormなどのクラス階層が間違っている(org.apache.struts.action.とorg.apache.struts.validator.に注意。またDynaActionFormのつもりで間違ってActionFormと書いていないかにも注意。ActionFormは抽象クラスなのでインスタンス化できません)</li> </ul> <br> <ul> <li><b>html:formの入力内容が自作Form Beanに保存されない</b><br> ・ActionFormやValidatorFormではなく、DynaActionFormを継承してFormBeanを作っている。</li> </ul> <br> <ul> <li><b>HTTP Status 500: No action instance for path /***Action could becreated</b><br> ・struts-config.xmlでActionクラスに指定したクラスが存在しない。</li> <li><b>No action instance for path /***Action could be createdjava.lang.ClassCastException at org.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:326)</b><br> ・struts-config.xmlでActionクラスに指定したクラスがActionを継承していない。</li> </ul> <br> <ul> <li><b>validation.xmlによるバリデーションが効かない</b><br> ・struts-config.xmlにValidationプラグインを書いていない<br> ・validator-rules.xml、validation.xmlが/WEB-INFに存在しない。<br> ・struts-configのActionの定義でvalidate="true"になっていない。<br> ・Actionが指定するFormBeanがDynaValidatorFormではなく自作Beanで、その中にvalidate()メソッドが実装されていない。<br> ・struts.jarとvalidator-rules.xmlのバージョンが合っていない(ログを注意深く見るとエラーになっているはず)</li> </ul> <br> <ul> <li> <b>入力が正しいはずなのにバリデーションエラーになる</b><br> ・validation.xmlのfieldproperty=のプロパティ名が間違っている(存在しない)</li> </ul> <br> <ul> <li> <b>フォームに前回入力した内容が保持されていない</b><br> ・Actionのscopeがrequestになっている(入力内容を保持するにはsessionにするか、何も書かない)<br> ・html:textタグなどでvalue属性で初期値を設定している</li> </ul> <br> <ul> <li> <b>メッセージ・リソースを参照したメッセージが表示されない</b><br> ・struts-config.xmlのmessage-resourcesにApplicationPropertiesの設定を書いていない。<br> ・struts-config.xmlのmessage-resourcesのクラス階層が間違っている(他アプリケーションのstruts-config.xmlを流用したときなどに大注意)<br> ・ApplicationResources.propertiesファイルの更新漏れ(日本語は直で書けないので他所で編集することが多いが、最終的な.propertiesファイルの置き場所に反映できていない)<br> ・JSPにtaglibディレクティブでbeanタグライブラリの宣言をしていない(ページのソースを表示すると、bean:writeタグがそのまま出力されているケース)</li> </ul> <br> <ul> <li><b>javax.servlet.UnavailableException: Parsing error processing resourcepath</b><br> ・struts-config.xmlのmessage-resourcesの中がリソース・パスとして認識できない。またはその直前のコメントの開閉タグがおかしく、message-resourcesタグが正しく認識されていない。</li> </ul> <br> <ul> <li><b>javax.servlet.ServletException: DispatchMapping[/Actionマッピング]does not define a handler property</b><br> ・DispatchActionを継承したActionクラスに対して、struts-config.xmlのActionの設定でparameter属性を書いていない。</li> </ul> <br> <ul> <li><b>Request[/Actionマッピング] does not contain handler parameter named{パラメータ名}</b><br> ・LookupDispatchActionで、Actionの設定に書いたparameter属性の値と、JSP文書のフォームのhtml:submitタグのpropertyの値が違う。<br> ・LookupDispatchActionで、Submitボタンのラベルとして使うキーに日本語を使っているが、リクエスト変数のエンコーディングの設定をしていない(<a href="http://www4.atwiki.jp/_epoz/struts-memo.html">Strutsメモ</a>のエンコーディングの設定をすると直る)</li> </ul> <br> <ul> <li><b>Action.execute()で引数のformがnull</b><br> ・struts-config.xmlでname、attribute属性を設定していない。</li> </ul> <br> <ul> <li><b>javax.servlet.ServletException: Cannot retrieve definition for form beannull</b><br> ・JSPの中に、html:formタグがあるとして、そのaction属性で指定されたActionをAとします。struts-config.xmlのアクションAの定義に、name、attribute属性が設定されていないとこのエラーになります。</li> </ul> <br> <ul> <li><b>javax.servlet.ServletException: No getter method for property *** ofbean org.apache.struts.taglib.html.BEAN</b><br> ・あるJSPにフォームFがあるとします。<br> Fにはhtml:textタグなどでpropery="p"という指定のタグがあるとします。<br> Fのaction=で指定しているActionをAとします。<br> Aにstruts-config.xml上でマップされているフォームアクションBeanをBとします。<br> Bのstruts-config.xml上の定義に、プロパティ "p"が存在しないとこのエラーになります。</li> </ul> <br> <ul> <li><b>javax.servlet.jsp.JspException: Cannot find ActionMappings orActionFormBeans collection</b><br> ・サーブレットコンテナのログを見たら相当致命的な別のエラーが出ている。それを直すと解決する(かも)</li> </ul> <br> <ul> <li><b>javax.servlet.UnavailableException: Initializing application data sourceorg.apache.struts.action.DATA_SOURCE</b><br> ・struts-config.xmlのdata-sourceタグで指定している接続ぷーリングつきのデータソースに接続できない。DBMSがダウンしていないか、接続情報が正しいかを確認します。</li> </ul> <br> <ul> <li><b>java.lang.NullPointerException: 空の属性名です<br> atorg.apache.jasper.runtime.PageContextImpl.findAttribute(PageContextImpl.java:450)</b><br> ・logic:iterateカスタムタグで、コレクション要素を(name、name+property、collectionのいずれかの属性で)指定していない。</li> </ul> <br> <ul> <li><b>The requested resource (/***) is not available.(HTTP ERROR 404)</b><br> ・struts-config.xmlのActionの定義で、input属性で指定したパスの文書が存在しない。(先頭にスラッシュがついているかどうか、拡張子がついているかも注意)</li> </ul> <br> <ul> <li><b>No input attribute for mapping path /***</b><br> ・Actionのバリデーションに引っかかったが、struts-config.xmlのActionの定義で、input属性で戻るパスを指定していない。</li> </ul> <br> <ul> <li> <b>java.lang.NullPointerExceptionorg.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:515)</b><br> ・(エラーの内容は場合によって異なるはずです)BeanUtils.populateでNullPointerExceptionが発生するよくある原因は、Form Beanのスコープをrequestにしているのに、2画面以上のActionの情報の受け渡しに使おうとしている場合です。素直にスコープをsessionにします。</li> </ul> <br> <ul> <li> <b>nested:iterateループの中でbean:writeを使ってもnestedのBeanのプロパティを印字できない</b><br> ・bean:writeのnested版でnested:writeというタグがあります。nested:writeの属性はname=ではなくproperty=なので注意。</li> </ul>
<ul> <li><b>フォワード先が空白になる</b><br> ・mapping.findForward()で指定したフォワード名がstruts-config.xmlのActionの定義に書かれていない。<br> ・Actionがexecuteメソッドをオーバーライドしていない。またはメソッド名が間違っているため、正しくオーバーライドできていない。<br> ・Actionのexecuteメソッドのシグネチャが異なるため、正しくオーバーライドできていない。</li> </ul> <br> <ul> <li><b>JSP文書にアクセスするとJavaScriptエラー</b><br> ・html:formタグのfocus属性に書かれた名前の入力欄(プロパティ)が存在しない。</li> </ul> <br> <ul> <li><b>サーブレット action が利用できません</b><br> struts-config.xmlの構文エラー、またはcontrollerタグやpluginタグに記述したクラスがロードできないなどの理由で、ActionServletの初期化に失敗している。→サーブレットコンテナのログを見て、エラー原因を解消します。</li> </ul> <br> <ul> <li><b>javax.servlet.ServletException: Exception creating bean of class...:{1}</b><br> ・struts-config.xmlのform-beanに書いたクラスが存在しない。<br> ・struts-config.xmlのform-beanに書いたクラスがActionFormを継承していない。<br> ・struts-config.xmlのform-beanに書いたクラスがインスタンス化できない(例:抽象クラス、引数のないpublicのコンストラクタがない)<br> ・struts-config.xmlのform-beanに記述するDynaActionFormなどのクラス階層が間違っている(org.apache.struts.action.とorg.apache.struts.validator.に注意。またDynaActionFormのつもりで間違ってActionFormと書いていないかにも注意。ActionFormは抽象クラスなのでインスタンス化できません)</li> </ul> <br> <ul> <li><b>html:formの入力内容が自作Form Beanに保存されない</b><br> ・ActionFormやValidatorFormではなく、DynaActionFormを継承してFormBeanを作っている。</li> </ul> <br> <ul> <li><b>HTTP Status 500: No action instance for path /***Action couldbecreated</b><br> ・struts-config.xmlでActionクラスに指定したクラスが存在しない。</li> </ul> <br> <ul> <li><b>No action instance for path /***Action could becreatedjava.lang.ClassCastException atorg.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:326)</b><br> ・struts-config.xmlでActionクラスに指定したクラスがActionを継承していない。</li> </ul> <br> <ul> <li><b>validation.xmlによるバリデーションが効かない</b><br> ・struts-config.xmlにValidationプラグインを書いていない<br> ・validator-rules.xml、validation.xmlが/WEB-INFに存在しない。<br> ・struts-configのActionの定義でvalidate="true"になっていない。<br> ・Actionが指定するFormBeanがDynaValidatorFormではなく自作Beanで、その中にvalidate()メソッドが実装されていない。<br> ・struts.jarとvalidator-rules.xmlのバージョンが合っていない(ログを注意深く見るとエラーになっているはず)</li> </ul> <br> <ul> <li> <b>入力が正しいはずなのにバリデーションエラーになる</b><br> ・validation.xmlのfieldproperty=のプロパティ名が間違っている(存在しない)</li> </ul> <br> <ul> <li> <b>フォームに前回入力した内容が保持されていない</b><br> ・Actionのscopeがrequestになっている(入力内容を保持するにはsessionにするか、何も書かない)<br> ・html:textタグなどでvalue属性で初期値を設定している</li> </ul> <br> <ul> <li> <b>メッセージ・リソースを参照したメッセージが表示されない</b><br> ・struts-config.xmlのmessage-resourcesにApplicationPropertiesの設定を書いていない。<br> ・struts-config.xmlのmessage-resourcesのクラス階層が間違っている(他アプリケーションのstruts-config.xmlを流用したときなどに大注意)<br> ・ApplicationResources.propertiesファイルの更新漏れ(日本語は直で書けないので他所で編集することが多いが、最終的な.propertiesファイルの置き場所に反映できていない)<br> ・JSPにtaglibディレクティブでbeanタグライブラリの宣言をしていない(ページのソースを表示すると、bean:writeタグがそのまま出力されているケース)</li> </ul> <br> <ul> <li><b>javax.servlet.UnavailableException: Parsing error processingresourcepath</b><br> ・struts-config.xmlのmessage-resourcesの中がリソース・パスとして認識できない。またはその直前のコメントの開閉タグがおかしく、message-resourcesタグが正しく認識されていない。</li> </ul> <br> <ul> <li> <b>javax.servlet.ServletException:DispatchMapping[/Actionマッピング]does not define a handlerproperty</b><br> ・DispatchActionを継承したActionクラスに対して、struts-config.xmlのActionの設定でparameter属性を書いていない。</li> </ul> <br> <ul> <li><b>Request[/Actionマッピング] does not contain handler parameternamed{パラメータ名}</b><br> ・LookupDispatchActionで、Actionの設定に書いたparameter属性の値と、JSP文書のフォームのhtml:submitタグのpropertyの値が違う。<br> ・LookupDispatchActionで、Submitボタンのラベルとして使うキーに日本語を使っているが、リクエスト変数のエンコーディングの設定をしていない(<a href="http://www4.atwiki.jp/_epoz/struts-memo.html">Strutsメモ</a>のエンコーディングの設定をすると直る)</li> </ul> <br> <ul> <li><b>Action.execute()で引数のformがnull</b><br> ・struts-config.xmlでname、attribute属性を設定していない。</li> </ul> <br> <ul> <li><b>javax.servlet.ServletException: Cannot retrieve definition for formbeannull</b><br> ・JSPの中に、html:formタグがあるとして、そのaction属性で指定されたActionをAとします。struts-config.xmlのアクションAの定義に、name、attribute属性が設定されていないとこのエラーになります。</li> </ul> <br> <ul> <li><b>javax.servlet.ServletException: No getter method for property *** ofbeanorg.apache.struts.taglib.html.BEAN</b><br> ・あるJSPにフォームFがあるとします。<br> Fにはhtml:textタグなどでpropery="p"という指定のタグがあるとします。<br> Fのaction=で指定しているActionをAとします。<br> Aにstruts-config.xml上でマップされているフォームアクションBeanをBとします。<br> Bのstruts-config.xml上の定義に、プロパティ"p"が存在しないとこのエラーになります。</li> </ul> <br> <ul> <li><b>javax.servlet.jsp.JspException: Cannot find ActionMappingsorActionFormBeans collection</b><br> ・サーブレットコンテナのログを見たら相当致命的な別のエラーが出ている。それを直すと解決する(かも)</li> </ul> <br> <ul> <li><b>javax.servlet.UnavailableException: Initializing application datasourceorg.apache.struts.action.DATA_SOURCE</b><br> ・struts-config.xmlのdata-sourceタグで指定している接続ぷーリングつきのデータソースに接続できない。DBMSがダウンしていないか、接続情報が正しいかを確認します。</li> </ul> <br> <ul> <li><b>java.lang.NullPointerException: 空の属性名です<br> atorg.apache.jasper.runtime.PageContextImpl.findAttribute(PageContextImpl.java:450)</b><br> ・logic:iterateカスタムタグで、コレクション要素を(name、name+property、collectionのいずれかの属性で)指定していない。</li> </ul> <br> <ul> <li><b>The requested resource (/***) is not available.(HTTP ERROR 404)</b><br> ・struts-config.xmlのActionの定義で、input属性で指定したパスの文書が存在しない。(先頭にスラッシュがついているかどうか、拡張子がついているかも注意)</li> </ul> <br> <ul> <li><b>No input attribute for mapping path /***</b><br> ・Actionのバリデーションに引っかかったが、struts-config.xmlのActionの定義で、input属性で戻るパスを指定していない。</li> </ul> <br> <ul> <li> <b>java.lang.NullPointerExceptionorg.apache.commons.beanutils.PropertyUtils.getIndexedProperty(PropertyUtils.java:515)</b><br> ・(エラーの内容は場合によって異なるはずです)BeanUtils.populateでNullPointerExceptionが発生するよくある原因は、FormBeanのスコープをrequestにしているのに、2画面以上のActionの情報の受け渡しに使おうとしている場合です。素直にスコープをsessionにします。</li> </ul> <br> <ul> <li> <b>nested:iterateループの中でbean:writeを使ってもnestedのBeanのプロパティを印字できない</b><br> ・bean:writeのnested版でnested:writeというタグがあります。nested:writeの属性はname=ではなくproperty=なので注意。</li> </ul>

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー