You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Batch Admin新增自定义菜单求助:求示例及FTL文件放置位置

在Spring Batch Admin中添加自定义菜单的实现方案

我之前在扩展Spring Batch Admin的时候也遇到过这个问题,官方文档确实说得比较模糊,下面给你一套完整的实现步骤和示例,应该能直接复用:

1. 配置自定义菜单项

首先找到Spring Batch Admin的Web配置文件,通常是src/main/resources/META-INF/spring/batch/admin/web/servlet-config.xml,找到menuBar这个bean,在原有菜单列表里添加你的自定义菜单项:

<bean id="menuBar" class="org.springframework.batch.admin.web.navigation.MenuBar">
    <property name="menus">
        <list>
            <!-- 保留系统原有菜单 -->
            <ref bean="jobsMenu" />
            <ref bean="executionsMenu" />
            <ref bean="stepExecutionsMenu" />
            <ref bean="jobInstancesMenu" />
            <ref bean="jobParametersMenu" />
            <ref bean="exitCodesMenu" />
            <!-- 新增自定义菜单 -->
            <bean class="org.springframework.batch.admin.web.navigation.Menu">
                <property name="label" value="我的自定义菜单" />
                <!-- 菜单跳转的URL,对应后面控制器的请求路径 -->
                <property name="link" value="/my-custom-page" />
                <!-- 可选:如果需要权限控制,添加权限角色 -->
                <!-- <property name="authorities" value="ROLE_ADMIN" /> -->
            </bean>
        </list>
    </property>
</bean>

如果需要子菜单,只需要在自定义Menu bean里嵌套subMenus属性即可:

<bean class="org.springframework.batch.admin.web.navigation.Menu">
    <property name="label" value="我的父菜单" />
    <property name="subMenus">
        <list>
            <bean class="org.springframework.batch.admin.web.navigation.Menu">
                <property name="label" value="子菜单1" />
                <property name="link" value="/sub-menu-1" />
            </bean>
            <bean class="org.springframework.batch.admin.web.navigation.Menu">
                <property name="label" value="子菜单2" />
                <property name="link" value="/sub-menu-2" />
            </bean>
        </list>
    </property>
</bean>

2. 编写请求控制器

创建一个Spring MVC控制器,处理自定义菜单对应的URL请求,返回视图名称:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.ui.Model;

@Controller
public class CustomMenuController {

    @GetMapping("/my-custom-page")
    public String showCustomPage(Model model) {
        // 可选:在这里添加业务逻辑,比如往Model里传页面需要的数据
        model.addAttribute("welcomeMsg", "欢迎访问我的自定义菜单页面!");
        // 返回的视图名称对应FTL文件(无需加.ftl后缀)
        return "myCustomPage";
    }
}

注意要确保这个控制器被Spring容器扫描到,可以在配置类上添加@ComponentScan("你的控制器所在包路径"),或者在XML配置里添加:

<context:component-scan base-package="com.yourpackage.controller" />

3. FTL模板文件的放置位置

Spring Batch Admin默认使用FreeMarker作为视图引擎,自定义的FTL文件必须放在**src/main/resources/META-INF/spring/batch/admin/web/views**目录下,和系统自带的模板文件(比如jobs.ftl、executions.ftl)同层级。

比如创建myCustomPage.ftl,可以复用系统的布局模板:

<#import "layout.ftl" as layout>
<@layout.screen label="我的自定义页面">
    <div class="row">
        <div class="col-md-12">
            <h3>${welcomeMsg}</h3>
            <!-- 这里可以添加你的页面内容,比如表格、表单、统计图表等 -->
            <p>这是我自己扩展的Spring Batch Admin功能页面</p>
        </div>
    </div>
</@layout.screen>

4. 测试验证

启动Spring Batch Admin应用,登录后就能在顶部菜单栏看到你添加的“我的自定义菜单”,点击后会跳转到你编写的自定义页面。

内容的提问来源于stack exchange,提问作者Tech Learning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:53:00