Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

JSPのhtml:javascriptタグを使うとエラーになってしまいます

こんにちは。いつも困った時に参考にさせて頂いております。

strutsのValidator機能を利用し入力のチェックを行っています
しかし、JavaScriptを使用して画面を表示しようとするとログに以下のエラーが出てしまいます><。

javax.servlet.jsp.JspException: No form found under 'entryForm' in locale 'ja'.  A form must be defined in the Commons Validator configuration when dynamicJavascript="true" is set.

画面には以下のように出ます。
org.apache.jasper.JasperException: An exception occurred processing JSP page /pages/entry.jsp at line 16

13:             <tr>
14:             <td>
15:             <html:form action="Entry" onsubmit="return validateEntryForm(this);">
16:               <html:javascript formName="entryForm"/>
17:                     <div align="center">Validator&#65533;T&#65533;&#65533;&#65533;v&#65533;&#65533;</div>
18:                 <table width="100%">
19:                     <tr>

明らかに16行目のjavascriptでエラーになっているのですが、どうやって解決すればいいのかわかりません。
このアホにアドバイスをよろしくお願いいたします・・OTL

開発環境は
Tomcat 6.0
jdk1.6.0_13
struts-1.3.10
を使っています。
何か情報が足りない所があれば教えてください。

18

回答

19310

閲覧

18件の回答

評価

0

すいません。
画面に出るエラーの17行目の「&#65533;T&#65533;&#65533;&#65533;v&#65533;&#65533;」は文字化けです。
失礼しました;

評価

0

まずは

No form found under 'entryForm' in locale 'ja'.  A form must be defined in the Commons Validator configuration when dynamicJavascript="true" is set.

を和訳してみて。

評価

0

和訳をしてみたのですが、
1.formがローカルの'ja'の中に'entryForm'がない。
2.dynamicJavascript="true"となること。
と言う風に理解しています。(間違えているかもしれないけど・・・)

和訳をすると
1.'ja'の意味がわからない・・・
2.dynamicjavascriptについては
http://itpro.nikkeibp.co.jp/article/COLUMN/20080212/293589/?ST=develop&P=5
のサイトを見るとJSPに記述しなくてもデフォルトで設定されている

と思っているのですが、間違っていますでしょうか?

評価

0

>和訳をしてみたのですが、
英語が得意でないと思うなら、翻訳サイトを使うべし。

評価

0

>$さん
あっ。
和訳じゃなくて翻訳サイトを使って意味を調べました。
打ち間違いです。すいません^^;

評価

0

寧ろ大事なのは
>No form found 
ここ。

評価

0

ヒント
つvalidation.xml

評価

0

>コロさん
アドバイスありがとうございます。
自分もvalidation.xmlのformが怪しいと思い確認してみたのですが、
----一部抜粋----
   <formset language="ja" country="JP">
        <form name="entryForm">
            <field property="name" depends="required,maxlength">
                <arg position="0" key="entry.name" />
                <arg position="1" name="maxlength" key="${var:maxlength}" resource="false" />
                <var>
                    <var-name>maxlength</var-name>
                    <var-value>${const_name}</var-value>
                </var>
            </field>
というように「form name="entryForm"」とセットしているつもりなのですが、間違いもしくは足りない箇所があるのでしょうか?
strutsのvalidationの設定は参考書を見ながら行っていて、入力ミスがあるか何度も探してみたのですが、自分の力でどうすることもできなくなってしまったので相談させていただいております。

評価

0

あらー?

>const_name
これはどこから?

評価

0

GW明けでごめんなさい。
返事遅くなりました。
const_nameは以下のように設定してます^^;
足りなくてごめんなさいOTL

<global>
   <constant>
       <constant-name>const_name</constant-name>
          <constant-value>30</constant-value>
   </constant>
</global>

評価

0

constant-name

const_name
って別物じゃないだろうか?
JSP は触ったことが無いので微妙だが・・・

評価

0

たびたびすいません・・・
<global>
   <constant>
       <constant-name>const_name</constant-name>
          <constant-value>30</constant-value>
   </constant>
</global>
はvalidation.xmlに記述しております;

評価

0

>別物〜
失礼、constant-name が const_name なのな。

<form-validation>
  <global>
    <constant><!-- グローバル定数の定義 -->
      <constant-name>const_name</constant-name>
      <constant-value>30</constant-value>
    </constant>
  </global>
//フォームのタグ
</form-validation>
こういうことか。

http://www.techscore.com/tech/ApacheJakarta/Struts/14.html
上記参考。

グローバル定数は、<global>要素内で<constant>要素を用いて定義します。<global>要素は<form-validation>要素内の先頭に定義します。<constant-name>で定数名、<constant-value>でその値を定義します。複数グローバル定数を定義する場合には、その数だけ<constant>要素を<global>要素内で繰り返します。

評価

0

なるほど。
複数グローバル定数を定義する場合には、その数だけ<constant>要素を<global>要素内で繰り返すことが必要なのですね。
よくわかりました。

話は戻りますが、JavaScriptを使用して画面を表示しようとしたときにエラーが出る原因は何が考えられるでしょうか?

評価

0

和訳の話が途中で切れてるな…。

ロケール 'ja' の 'entryForm' 配下にフォームが見つかりません。dynamicJavascript が "true" の場合、Commons Validator configurationにフォームを定義せねばなりません。

評価

0

ネットで以下のURLを見てみたのですが、よくわからなかったです。
http://www.chikkun.com/computer/java/study/Validator.html

Commons Validator configurationがそもそも何をするものなのかもよくわかりません。これは、どこかに新しくファイルを作らなければならないのでしょうか?

知識不足ですいませんが、どなたかアドバイスをよろしくお願いします;;

評価

0

>Commons Validator configurationがそもそも何をするものなのか
ああすまない。勘違いさせたか。
2009-04-28 17:09の2が全然訳になってなかったから書き下しただけで、validation.xmlでいいんよ。

定義したはずなのに見られてないようなら、内容が正しいかどうか、参照されてるかどうかを考える。

たとえば<formset>(属性なし)だとどうなるの?

評価

0

すいません勘違いしてました。

問題は今解決しました^^
ご回答いただいた皆さんありがとうございました。

原因はstruts-config.xmlに
<action-mappings>
    <action
      path="/Entry"
      name="entryForm"
      type="validator.EntryAction"
      validate="true"
      parameter="add">
        <forward name="result" path="/pages/result.jsp" />
    </action>
</action-mappings>
と指定していたのに、JSPで再びJavascriptを使い「entryForm」を宣言していた事が問題だったみたいです。イージーミスで申し訳ないです;
お騒がせいたしました^^;

>たとえば<formset>(属性なし)だとどうなるの?
日本語に対応した入力チェックができないと認識しています。間違っていたらすみません;

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。