2011-12-21 30 views
25

Tôi đang cố gắng nhận thông báo i18n như sau:thẻ thông báo mùa xuân có nhiều đối số

messageCode = Thông báo kiểm tra cho {0} và {1} và {2}.

Trong jsp, tôi có điều này:

<spring:message code="messageCode" 
       arguments="${value1},${value2},${value3}" 
       htmlEscape="false"/> 

Những lập luận:

value1=A,B 
value2=C,D 
value3=E,F 

Kết quả cho những gì tôi muốn:

Test message for A,B and C,D and E,F 

Sản lượng thực tế:

Test message for A and B and C 

Có cách nào để khắc phục điều này không? Cảm ơn bạn.

George

Trả lời

47

Nguyên nhân của probelm là , (dấu phẩy) là tách mặc định. Vì vậy, vào cuối thẻ thông điệp mùa xuân sẽ nhận được chuỗi A,B,C,D,E,F cho tham số arguments và nó sẽ chia chuỗi này thành 6 đối số nội bộ khác nhau cho thư.

Bạn phải thay đổi dấu phân cách. Ví dụ: nếu bạn sử dụng ; thì nó sẽ hoạt động.

<spring:message code="messageCode" 
     arguments="${value1};${value2};${value3}" 
     htmlEscape="false" 
     argumentSeparator=";"/> 

@See Spring Reference: Appendix F.6 The Message Tag

+0

thêm 'htmlEscape =" false " argumentsSeparator ="; "' giải quyết được sự cố của tôi – shareef

1

tôi sử dụng cách tiếp cận hoàn toàn khác nhau. nguồn tin cơ sở dữ liệu dựa trên của tôi được tiếp xúc trong cấu hình của tôi với tên i18n:

@Bean(name = {"i18n", "messageSource"}) 
public MessageSource messageSource() { 
    return new JpaMessageSource(); 
} 

và tôi cũng tiếp xúc với đậu của tôi với viewResolver.setExposeContextBeansAsAttributes(true); Sau đó tôi có thể sử dụng ${i18n.message("messageCode", value1, value2, value3)} trong jsp-quan điểm của tôi.

Các vấn đề liên quan