2016-07-07 65 views
0

我正在使用Spring Batch,并添加了一项新功能来过滤作业执行情况。我所做的就是创建一个新的控制器:Spring批处理:对我的自定义控制器使用executions.ftl

@Slf4j 
@Controller 
public class FilteredJobExecutionResource { 

    @Autowired 
    @Qualifier("filteredJobExecutionService") 
    @Getter 
    @Setter 
    private FilteredJobExecutionService filteredJobExecutionService; 

    private TimeZone timeZone = TimeZone.getDefault(); 

    public FilteredJobExecutionResource() { 
     super(); 
    } 

    @RequestMapping(value = { "/jobs/executions.*/filter/{filter}" }, method = RequestMethod.GET, produces = "application/json") 
    public @ModelAttribute("jobExecutions") 
    Collection<JobExecutionInfo> list(ModelMap model, @PathVariable("filter") String filter, 
             @RequestParam(defaultValue = "0") int startJobExecution, 
             @RequestParam(defaultValue = "20") int pageSize) throws Exception { 

     int total = filteredJobExecutionService.countJobExecutions(filter); 
     TableUtils.addPagination(model, total, startJobExecution, pageSize, "JobExecution"); 

     Collection<JobExecutionInfo> result = new ArrayList<>(); 
     for (JobExecution jobExecution : filteredJobExecutionService.listJobExecutionsByFilter(filter, startJobExecution, pageSize)) { 
      result.add(new JobExecutionInfo(jobExecution, timeZone)); 
     } 

     return result; 
    } 

} 

这个类,非常类似于Spring Batch的JobExecutionController,但加入了PathVariable,过滤器。我现在面临的问题是,我希望我的控制器使用像JobExecutionController现有的JSON/executions.ftl做,但我得到以下错误:

Could not resolve view with name 'jobs/executions.json/filter/662' in servlet with name 'RESTServlet'

任何想法,我怎么能解决这个问题呢?

感谢

+0

我发现了一个部分解决方案: ' \t \t <属性名= “属性”> \t \t \t <道具合并= “真”> \t \t \t \t <丙键= “体”> /经理/作业/ JSON/executions.ftl \t \t \t \t \t \t ' 但它只适用于过滤器值为662的请求。任何方式来做任何值? – user1990218

回答

0

我找到了解决这个添加到我的应用程序上下文:

<bean name="jobs/executions.json/filter" parent="standard.json"> 
    <property name="attributes"> 
     <props merge="true"> 
      <prop key="body">/manager/jobs/json/executions.ftl</prop> 
     </props> 
    </property> 
</bean> 

但是,我不得不把@PathVariable过滤器更改为@RequestParam:

@RequestMapping(value = { "/jobs/executions.*/filter" }, method = RequestMethod.GET) 
    public @ModelAttribute("jobExecutions") 
    Collection<JobExecutionInfo> list(ModelMap model, @RequestParam("value") String value,@RequestParam(defaultValue = "0") int startJobExecution,@RequestParam(defaultValue = "20") int pageSize) 

任何想法如何将此工作设置过滤器作为@PathVariable获取?

相关问题