dポイントプレゼントキャンペーン実施中!

struts validator にて検証チェックを行いたく作成をしましたが、上記のエラーが出てしまいました。
エラーは以下のようになっています
 org.apache.commons.validator.ValidatorException: No such validation method: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest)
at org.apache.commons.validator.ValidatorAction.loadValidationMethod
ちなみにstrutsconfigは以下の通りとなっております。
 <form-beans>
<form-bean name="userRegistForm" type="blog.userRegistForm">
<form-property name="login_name" type="java.lang.String"/>
<form-property name="nick_name" type="java.lang.String"/>
<form-property name="email" type="java.lang.String"/>
</form-bean>
</form-beans>
<action-mappings>
<action path="/userRegist"
type="blog.userRegistAction"
name= "userRegistForm"
input="/userRegist.jsp"
scope="session"
validate="true">
<forward name="success" path="/register_2.jsp" />
</action>

jspの画面からlogin_name、nick_name、emailの入力欄を空欄のまま登録ボタンを押すと、userRegistFormに値がセットされた後、blog.userRegistAction.doに画面が遷移します(なにも表示されません)
 また、validation.xmlは以下の通りとなっております。
 ~中略~
 <form-validation>
<formset>
<form name="userRegistForm">
<field property="login_name"
depends="required">
<msg name="required" key="errors.empty" />
<arg name="required" key="string.login_name" position="0"/>
</field>
<field property="nick_name" depends="required">
<msg name="required" key="errors.empty"/>
<arg name="required" key="string.nick_name" position="0"/>
</field>
<field property="email" depends="required,email">
<msg name="required" key="errors.empty"/>
<arg name="required" key="string.email" position="0"/>
<msg name="email" key="errors.email"/>
<arg name="email" key="item.id" position="0"/>
</field>
</form>
</formset>
</form-validation>
 また、userRegistFormは以下の通りとなっております。
 private String login_name;
private String nick_name;
private String email;

public userRegistForm()
{
login_name=null;
nick_name=null;
email=null;
}
public String getLogin_name() {
return login_name;
}
public void setLogin_name(String loginName) {
login_name = loginName;
}
public String getNick_name() {
return nick_name;
}
public void setNick_name(String nickName) {
nick_name = nickName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
となっておりますが、エラーの原因がよくわかりません。
ご教授の程よろしくお願い申し上げます。

A 回答 (3件)

>org.apache.commons.validator.ValidatorException: No such validation method: >org.apache.struts.validator.FieldChecks.validateRequired(・・・



validateRequiredメソッドがないといっているので、
validator-rules.xmlにvalidateRequiredの記述が抜けているのではないでしょうか?

エラーではvalidateEmailについて触れていません。
    • good
    • 0

バージョンが書かれていないのでわかりませんが・・・


(システムの構築が最近の事であればまずありえない事だとは思いますが)

strutsのあるバージョンからFieldChecksのシグネチャ変更されて(引数が1個増えて)、
それ以前に構築したシステムだと、その更新の影響で設定ファイルを手動で対応してやる必要があったと記憶しています。
(バージョンいくつからかは失念しましたが・・・)
もし今回の問題の発生に前後してstrutsのバージョンアップをされていたのであれば、
その辺りを確認されてみてはいかがでしょうか。
結構昔の事なので細かい事はよく覚えておらず、申し訳ありません。
解決の糸口となれば幸いです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
validator-rule.xmlを割と新めのものと取り換えたら、エラーがなくなりました
ありがとうございました

お礼日時:2011/06/23 18:33

・Validationを適用するActionFormはValidatorFormを継承してください。


・validator-rules.xmlは?
・struts-configにvalidation.xmlとcalidator-rules.xmlを指定していないよ。

とりあえず気づいたところを挙げてみました。

validationに必要な設定・ファイルをもう一度一から確認したほうが良いかもしれませんね。

参考URL:http://www.javaroad.jp/opensource/js_struts19.htm
    • good
    • 0
この回答へのお礼

回答ありがとうございます
Validationを適用するActionFormはValidatorFormを継承してください
→import org.apache.struts.validator.ValidatorForm;
public class userRegistForm extends ValidatorForm {と継承しています
validator-rules.xmlは?
→WEB-INFの下にあります。
<validator name="email"
classname="org.apache.struts.validator.FieldChecks"
method="validateEmail"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.email"/>
      と確かに記入されております
  struts-configにvalidation.xmlとcalidator-rules.xmlを指定していないよ。
  →<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
 と入力されておりました。
 原因と思われるところのご指摘をよろしくお願い申し上げます

 

お礼日時:2011/06/22 08:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!