電気ウナギ的○○

About Home

select タグに関連付ける Bean の名前を指定してないだけだった(^^;;;

shinoda (2016年10月28日 10:39)
Struts1 の保守案件で JSP をぽちぽち触っている時に、

HTTPステータス 500 - javax.servlet.ServletException: javax.servlet.jsp.JspException:
Cannot find bean under name sex_list

というエラーが出たのでしばし悩む。

「sex_list」という名前の「bean」を見つけられない?
「bean」の中に「sex_list」を見つけられない?
英語苦手なのと Java/Struts 初心者なのでどう訳すのが正解なのかわからないが、sex_list プロパティが見つからないと言っているのは確かなようだ・・・

説明には、

The server encountered an internal error that prevented it from fulfilling this request.

とあるが、リクエストが内部エラーを起こしたぜってだけの説明で、結局「Cannot find bean under name sex_list」が全てだな・・・(^^;

ちなみに JSP の記述は

<html:select property="sex">
  <html:option collection="sex_list" property="label" labelProperty="value"/>
</html:select>

で、hogeForm というアクション・フォーム Bean の記述は、

private Vector<LabelValueBean> sex_list = new Vector<LabelValueBean>();

public Vector<LabelValueBean> getSex_list() {
  return sex_list;
}

public void setSex_list(Vector<LabelValueBean> sex_list) {
  this.sex_list = sex_list;
}

こんな感じで問題なさそう。

あ・・・hogeForm っていうアクション・フォーム Bean の名前を指定してないからか。

このシステムでは、baseForm クラスが extends ActionForm という具合に ActionForm クラスを継承しており、hogeForm クラスはこの baseForm クラスをスーパークラスにしている。
なので、name 属性で hogeForm を指定していないから、大元の baseForm クラスに getSex_list メソッドを参照にいっちゃうのか???で、sex_list プロパティは実際には hogeForm にしか存在していないからエラーになると。

<html:form>タグか、<html:select>タグに name 属性で hogeForm を指定すれば良いようだが、他のソースを漁ってみると、<bean:define>タグで指定していたので、同じように、

<bean:define id="sex_list" name="hogeForm" property="sex_list" scope="request"/>

という記述を追加してバッチリOK。

恥ずかしいミスだが、ググってみると同じような間違いをして質問している人もいたので、そういう初心者たちの何かの助けになればと思い、ブログに書いときます。

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/4148

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE