[Seasar-user:16868] Form 'XXXXXXXX_Form' not found for locale 'ja_JP'のWARNメッセージ出力について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2009年 2月 10日 (火) 19:12:32 JST


泉保(senbo)と申します。
初めて投稿させて頂きます。

Seasar2とS2Struts及びS2DaoとMayaaを組み合わせてシステムを構築中です。
現在Tomcat起動時に表題で記載したワーニングメッセージが表示されてしまう状態で、
どうにか出力されないようにならないかと調べましたが、どうにもわからなく、
このメーリングリストに投稿いたしました。

当方の環境と現在使用している各プロジェクトのバージョンは以下のとおりです。
OS:Red Hat Enterprise Linux 4
JDK1.5.0_14
Sesar2-2.4.32
S2Struts-V1.3.0
S2Dao-1.0.49
Mayaa-1.1.23
Struts-1.3.8
Tomcat-5.5.25
Apache-2.2.6
PostgreSQL-8.1.9
struts-config.xml には アクションクラスやアクションフォーム等の記述は行わないで
定数アノテーションによる無設定Strutsの仕組みで構築しています。

事象としては以下のとおりです。
Tomcat起動時にStrutsのplug-in機能の組み込み時に以下に示すワーニングメッセージが出力されてしまいます。

Form 'hoge1_Form' not found for locale 'ja_JP'
Form 'hoge2_Form' not found for locale 'ja_JP'
Form 'hoge3_Form' not found for locale 'ja_JP'
	・
	・
(※フォーム名は適当に記述しています)

PCのeclipse環境でデバッグ実行しながらソースコードの実行を調べてみると、
以下に示す「起動時にデバッグして実行されたクラス」順序で実行され、
org.seasar.struts.lessconfig.autoregister.impl.StrutsConfigRegisterImpl#registerValidations
のメソッド内で1アクションフォーム毎に getForm メソッドが実行されるタイミングでWARNメッセージが
表示されます(log4j.propertiesはWARNレベルで動作させています)。

対処方法としてどういうことを行えばよろしいでしょうか?
また他に必要な情報があれば言ってください。


●struts-config.xml の plug-inの設定部分

	<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
		<set-property
		  property="pathnames"
		  value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
	</plug-in>
	<plug-in className="org.seasar.struts.lessconfig.plugin.AutoStrutsConfigRegisterPlugIn">
		<set-property property="enableJar" value="false"/>
		<set-property property="docRoot" value="/hoge"/>
		<!--(※ビューファイルを配備している最上位のディレクトリー名は適当に記述しています)-->
	</plug-in>
	<plug-in className="org.seasar.struts.hotdeploy.plugin.HotdeployPlugIn"/>

●起動時にデバッグして実行されたクラス

org.apache.struts.action.ActionServlet#init
initModulePlugIns(moduleConfig);
	↓
org.apache.struts.action.ActionServlet#initModulePlugIns
plugIns[i].init(this, config);
	↓
org.seasar.struts.lessconfig.plugin.AutoStrutsConfigRegisterPlugIn#init
register(actionServlet, config);
	↓
org.seasar.struts.lessconfig.plugin.AutoStrutsConfigRegisterPlugIn#register
getConfigRegister().register(config, this.classFinder.getClassCollection());
	↓
org.seasar.struts.lessconfig.autoregister.impl.StrutsConfigRegisterImpl#register
registerValidations(config);
	↓
org.seasar.struts.lessconfig.autoregister.impl.StrutsConfigRegisterImpl#registerValidations
        for (int i = 0; i < formConfigs.length; i++) {
            ///// (アクションフォーム数分繰り返す) /////
            if (!registeredValidation(currentResources, formConfigs[i])) {
				・
				・
				・
        }
	↓
org.seasar.struts.lessconfig.autoregister.impl.StrutsConfigRegisterImpl#registeredValidation
return (resources.getForm(Locale.getDefault(), formConfig.getName()) != null);
	↓
org.apache.commons.validator.ValidatorResources#getForm
return this.getForm(locale.getLanguage(), locale.getCountry(), locale.getVariant(), formKey);
	↓
org.apache.commons.validator.ValidatorResources#getForm
    public Form getForm(String language, String country, String variant, String formKey) {

        Form form = null;

        // Try language/country/variant
        String key = this.buildLocale(language, country, variant);
        if (key.length() > 0) {
            FormSet formSet = (FormSet)hFormSets.get(key);
            if (formSet != null) {
                form = formSet.getForm(formKey);
            }
        }
        String localeKey  = key;


        // Try language/country
        if (form == null) {
            key = buildLocale(language, country, null);
            if (key.length() > 0) {
                FormSet formSet = (FormSet)hFormSets.get(key);
                if (formSet != null) {
                    form = formSet.getForm(formKey);
                }
            }
        }

        // Try language
        if (form == null) {
            key = buildLocale(language, null, null);
            if (key.length() > 0) {
                FormSet formSet = (FormSet)hFormSets.get(key);
                if (formSet != null) {
                    form = formSet.getForm(formKey);
                }
            }
        }

        // Try default formset
        if (form == null) {
            form = defaultFormSet.getForm(formKey);
            key = "default";
        }

        if (form == null) {
            if (getLog().isWarnEnabled()) {
                ///// (ここでWARNメッセージが出力される) /////
                getLog().warn("Form '" + formKey + "' not found for locale '" + localeKey + "'");
            }
        } else {
            if (getLog().isDebugEnabled()) {
                getLog().debug("Form '" + formKey + "' found in formset '" +  key + "' for locale '" + localeKey + "'");
            }
        }

        return form;

    }


以上です。
よろしくお願いいたします。




Seasar-user メーリングリストの案内