Spring MVC 2.5中的I18N无法正常运行拦截器而没有任何错误 [英] i18n in spring mvc 2.5 unable to work interceptor without any error

查看:100
本文介绍了Spring MVC 2.5中的I18N无法正常运行拦截器而没有任何错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我是春季mvc 2.5框架的新手,我想在自己的Web应用程序中发展国际化.

请帮助我

在此先感谢

========= web.xml =========
< web>
< servlet>
< servlet-name>上下文</servlet-name>
< servlet-class> org.springframework.web.context.ContextLoaderServlet</servlet-class>
<启动时加载> 1</启动时加载>
</servlet>

< servlet>
< servlet名称>调度程序</servlet名称>
< servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
<启动时加载> 1</启动时加载>
</servlet>

< servlet-mapping>
< servlet名称>调度程序</servlet名称>
< url-pattern> *.htm</url-pattern>
</servlet-mapping>
</web>


//dispatcher-servlet.xml//

< bean id ="beanValidator" class ="org.springmodules.validation.commons.DefaultBeanValidator" p:validatorFactory-ref ="validatorFactory"/>
< bean id ="validatorFactory" class ="org.springmodules.validation.commons.DefaultValidatorFactory">
<属性名称="validationConfigLocations">
< list>
<值>/WEB-INF/validator-rules.xml</值>
< value>/WEB-INF/validation.xml</value>
</list>
</property>
</bean>

< bean id ="urlMapping" class ="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<属性名称=拦截器">
< list>
< ref bean ="localeChangeInterceptor"/>
</list>
</property>
<属性名称="order"值="1"/>
</bean>
< bean id ="localeChangeInterceptor" class ="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<属性名称="paramName"值="lang"/>
</bean>
< bean id ="localeResolver" class ="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<属性名称="cookieMaxAge">
< value> 3600</value>
</property>
<属性名称="defaultLocale" value ="zh-CN"/>
</bean>
< bean id ="messageSource" class ="org.springframework.context.support.ResourceBundleMessageSource" p:basename ="messages"/>

< bean name ="/Login.htm" class ="controller.LoginController" p:sessionForm ="true" p:commandName ="loginCommand"
p:commandClass ="bean.LoginCommand" p:formView ="Login" p:validator-ref ="beanValidator"/>

//jsp文件///
</b>< a href =?lang = en_US">英语</a>< b>
用户名-文本框
密码-文本框
提交按钮

Login.jsp名称


请给我建议,但是当我单击提交"时,会有一些验证,这些验证显示来自messages.properties文件的消息
在此先感谢

Hi all,

I am new in spring mvc 2.5 framework, I want to develop internationalization in my web application.

please help me

thanks in advance

=========web.xml=========
<web>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
</web>


// dispatcher-servlet.xml //

<bean id="beanValidator" class="org.springmodules.validation.commons.DefaultBeanValidator" p:validatorFactory-ref="validatorFactory"/>
<bean id="validatorFactory" class="org.springmodules.validation.commons.DefaultValidatorFactory">
<property name="validationConfigLocations" >
<list>
<value>/WEB-INF/validator-rules.xml</value>
<value>/WEB-INF/validation.xml</value>
</list>
</property>
</bean>

<bean id="urlMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
<property name="order" value="1" />
</bean>
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="cookieMaxAge">
<value>3600</value>
</property>
<property name="defaultLocale" value="en" />
</bean>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="messages" />

<bean name="/Login.htm" class="controller.LoginController" p:sessionForm="true" p:commandName="loginCommand"
p:commandClass="bean.LoginCommand" p:formView="Login" p:validator-ref="beanValidator"/>

//jsp file ///
</b><a href="?lang=en_US">English</a><b>
user name-- text box
password -- text box
submit button

Login.jsp name


please advice me but when I click on submit there is some validation which show messages from messages.properties file
thanks in advance

推荐答案

检查此内容:
check this: i18n Tutorial for Spring Framework[^]

a self developed attempt could look something like this:

public final class MultiLanguageSupport {
 
    public static ResourceBundle    oMap        = ResourceBundle.getBundle("resource/language/language");
    private static Logger           oLogger     = Logger.getLogger(MultiLanguageSupport.class);

    static {
        // load oMap with key/values according to selected language
    }

    public static final String getString(final String strKey) {
        final String strReturn = MultiLanguageSupport.oMap.getString(strKey);
        if ((null == strReturn) || (strReturn.length() == 0)) {
            // error logging - string not found
        }
        return strReturn;
    }

}



此类一被调用,地图就会被填充.然后可以使用MultiLanguageSupport.getString(KEY)获取字符串.

您还应该签出此工具:http://sourceforge.net/projects/eclipse-rbe/
对我来说效果很好,可以更好地控制语言文件.



The Map is filled as soon as this class is called. you can then get your Strings with MultiLanguageSupport.getString(KEY).

You should also check out this tool: http://sourceforge.net/projects/eclipse-rbe/
Works fine for me and gives you better control on the language files.


感谢您的回复

我发现我的错误上面的代码是正确的,但是我的LoginController存在问题,该问题具有formbackingobject方法,并且控制器扩展了SimpleFormController类...

当我使用此方法时,它将正常工作-handleRequestInternal(req,res)
但是我想在现有应用程序中使用i18n,其中有LoginController扩展了SimpleFormController类,并具有onSubmit()方法,formbacking方法和各种逻辑,因此我如何使用Spring mvc 2.5在现有Web应用程序中应用i18n

预先感谢
thanks for your reply

I have found my mistake the above code is right but there is problem with my LoginController which have formbackingobject method and controller extends SimpleFormController class...

when I used this method it will work properly -handleRequestInternal(req,res)
but I want to use i18n in my existing application there is LoginController which have extends SimpleFormController Class and have onSubmit() method , formbacking method and various logic so how I can applied i18n in existing web application using Spring mvc 2.5

thanks in advance


这篇关于Spring MVC 2.5中的I18N无法正常运行拦截器而没有任何错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆