如何将GetHolidays服务添加至工作台左侧菜单并实现点击自动执行?
菜单点击自动执行无参数服务请求的实现方案
我已经定义了一个无需任何参数(无用户输入参数或隐式参数)的服务请求类GetHolidays,它会返回Holiday实例列表,代码如下:
GetHolidays extends ServiceRequest { @Override EvalContext<Holiday> eval(Evaluator<ServiceRequest> evaluator); }
现在需要在初始化托管Folder实例的方法中添加逻辑,让点击该菜单条目时自动执行这个服务,现有初始化代码如下:
@Managed private Folder holidaysAction() { Folder bean = create(Folder.T).initFolder("holidays", "Holidays"); bean.setIcon(icons.holidayIcon()); // TODO add code for GetHolidays here return bean; }
修改后的完整代码
@Managed private Folder holidaysAction() { Folder bean = create(Folder.T).initFolder("holidays", "Holidays"); bean.setIcon(icons.holidayIcon()); // 给菜单绑定点击事件,触发GetHolidays服务执行 bean.setAction(() -> { // 实例化无参数的服务请求 GetHolidays getHolidays = new GetHolidays(); // 获取框架提供的Evaluator并执行服务 EvalContext<Holiday> evalContext = getHolidays.eval(getEvaluator(ServiceRequest.class)); // 这里可以根据业务需求处理返回的Holiday列表 // 比如把数据渲染到界面、存入状态容器等 // 示例:evalContext.subscribe(holidayList -> { /* 处理逻辑 */ }); }); return bean; }
关键逻辑说明
- 调用
setAction()方法为Folder菜单条目绑定点击回调,用户点击菜单时就会触发这段逻辑 - 直接实例化
GetHolidays(因为无参数,不需要传入任何配置) - 通过
getEvaluator(ServiceRequest.class)获取框架全局的Evaluator实例(这是框架标准的服务执行入口) - 调用服务的
eval()方法执行请求,得到包含Holiday列表的EvalContext - 最后根据业务场景处理返回的结果,比如更新UI、存储数据等
内容的提问来源于stack exchange,提问作者Qrisz Dhina
相关产品推荐
相关产品推荐

