如何在Java中使用i18n代码模板而不是在SpringMVC3中使用JSTL
当前的spring MVC应用程序集成了常量字符串消息/标签的如何在Java中使用i18n代码模板而不是在SpringMVC3中使用JSTL,java,spring,jsp,spring-mvc,jstl,Java,Spring,Jsp,Spring Mvc,Jstl,当前的spring MVC应用程序集成了常量字符串消息/标签的i18n和JSTL。这里有一些在服务层中获取代码模板所需的变通方法,以便可以将所有标签值打包到字符串数组列表 例如: 在message.properties中,有属性列表: task_START=Start task_ORDER=Order task_CANCEL=Cancel ..... task_FINISH=Finish task.list=START,ORDER,FINISH 现在在服务层,我需要分解上面的task.lis
i18n
和JST
L。这里有一些在服务层
中获取代码模板
所需的变通方法,以便可以将所有标签值打包到字符串数组列表
例如:
在message.properties
中,有属性列表:
task_START=Start
task_ORDER=Order
task_CANCEL=Cancel
.....
task_FINISH=Finish
task.list=START,ORDER,FINISH
现在在服务层,我需要分解上面的task.list
并获取代码模板task\u[value]
(这是JSTL的格式,但不确定这在Java代码中是否有效)以将所有分解放在字符串ArrayList中:
{"Start", "Order", "Finish"}
在我的代码中,我已经有:
@Value("${task.list}")
String taskString;
List<String> tasks= new ArrayList<String>();
@PostConstruct
public void init() {
String[] taskArray = taskString.split(",");
for(String task:taskArray){
// need match code template here
tasks.add(task.trim());
}
Collections.sort(tasks);
}
@Value(“${task.list}”)
字符串taskString;
列表任务=新建ArrayList();
@施工后
公共void init(){
String[]taskArray=taskString.split(“,”);
用于(字符串任务:taskArray){
//需要匹配代码模板在这里
tasks.add(task.trim());
}
集合。排序(任务);
}
上面的代码需要模板匹配才能将准确的属性值而不是属性名称注入列表,但如何实现这一点,就像在JSTL中一样?您只需注入并使用其方法之一,如:
@Autowired
private MessageSource messageSource;
someMethod(){
String task = ...;
String code = messageSource.getMessage("task_["+ task +"]", LocaleContextHolder.getLocale());
}
@madhead的答案有一点补充:我使用“task_uu”+task而不是“task_u[“+task+”]”,它工作得很好。。。