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
相关产品推荐
相关产品推荐

