[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 メーリングリストの案内