【问题标题】:Spring Batch: Using executions.ftl for my custom controllerSpring Batch:为我的自定义控制器使用 executions.ftl
【发布时间】: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

知道如何解决这个问题吗?

谢谢

【问题讨论】:

  • 我找到了一个部分解决方案:&lt;bean name="jobs/executions.json/filter/662" parent="standard.json"&gt; &lt;property name="attributes"&gt; &lt;props merge="true"&gt; &lt;prop key="body"&gt;/manager/jobs/json/executions.ftl&lt;/prop&gt; &lt;/props&gt; &lt;/property&gt; &lt;/bean&gt; 但它只适用于过滤值为 662 的请求。任何值都可以这样做吗?

标签: java json spring spring-mvc spring-batch


【解决方案1】:

我找到了一个解决方案,将其添加到我的应用程序上下文中:

<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 获取吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 2015-11-08
    相关资源
    最近更新 更多