【发布时间】:2016-07-07 10:52:31
【问题描述】:
我正在使用 Spring Batch,并且我添加了一个新功能来过滤作业执行。我所做的是创建一个新的控制器:
@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,但我收到以下错误:
无法解析名称为“jobs/executions.json/filter/662”的视图 名称为“RESTServlet”的 servlet
知道如何解决这个问题吗?
谢谢
【问题讨论】:
-
我找到了一个部分解决方案:
<bean name="jobs/executions.json/filter/662" parent="standard.json"> <property name="attributes"> <props merge="true"> <prop key="body">/manager/jobs/json/executions.ftl</prop> </props> </property> </bean>但它只适用于过滤值为 662 的请求。任何值都可以这样做吗?
标签: java json spring spring-mvc spring-batch