2014-05-20 15 views
7

Tôi theo khóa học Spring mvc trên Pluralsight và tôi có "Không thể thay đổi tiêu đề chấp nhận HTTP - sử dụng chiến lược độ phân giải miền địa phương" lỗi này khi chạy ứng dụng của tôi. Trước khi điều này, tôi đã thêm hạt đậu vào servlet-config.xmlKhông thể thay đổi tiêu đề chấp nhận HTTP - sử dụng chiến lược phân giải miền địa phương khác

<mvc:interceptors> 
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" p:paramName="language" /> 
</mvc:interceptors>   

<bean id="localResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" p:defaultLocale="en" /> 

Trong thư mục tài nguyên Tôi có hai tệp. messages_es.properties và messages.properties. Một có goal.text=Minutos Ejercicio para el día de hoy: và một số khác goal.text=Minutes Exercise For The Day Today: Vì vậy, mục tiêu là chọn ngôn ngữ.

Và trong file jsp Tôi có dòng này về nó

Language : <a href="?language=en">English</a> | <a href="?language=es">Spanish </a>

Vậy làm thế nào tôi có thể làm cho nó hoạt động một cách chính xác?

+0

Bạn đang sử dụng 'AcceptHeaderLocaleResolver' như để giải quyết miền địa phương khỏi tiêu đề 'Accept'. Nó sẽ không cho phép bạn thay đổi ngôn ngữ thông qua các tham số yêu cầu. – Bart

+3

Id bean sai, nó phải là 'localeResolver', do đó Spring đang đăng ký AcceptHeaderLocaleResolver mặc định. – Jukka

+1

@Jukka Cảm ơn bạn rất nhiều! Nó hoạt động ok bây giờ :) – vladdihoney

Trả lời

15

Thay đổi id đậu từ "localResolver" thành "localeResolver"

+0

Vâng, cảm ơn, giải pháp này hoạt động và nó đã được đề cập trong bình luận theo câu hỏi của tôi. – vladdihoney

+0

Nó cũng giải quyết được vấn đề của tôi! Cảm ơn rất nhiều! – user1321759

1

tôi giải quyết vấn đề này bằng cách đặt tên các phương pháp như localeResolver sử dụng giải pháp cung cấp ở đây Spring 4 i18n & l10n (Cannot change HTTP accept header)

@Bean 
public LocaleResolver localeResolver() 
{ 
    final SessionLocaleResolver localeResolver = new SessionLocaleResolver(); 
    localeResolver.setDefaultLocale(new Locale("en", "US")); 
    return localeResolver; 
} 
Các vấn đề liên quan