Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用i18n代码模板而不是在SpringMVC3中使用JSTL_Java_Spring_Jsp_Spring Mvc_Jstl - Fatal编程技术网

如何在Java中使用i18n代码模板而不是在SpringMVC3中使用JSTL

如何在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

当前的spring MVC应用程序集成了常量字符串消息/标签的
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+”]”,它工作得很好。。。