项目中现有一个接口直接操作修改redis的一个值,由于是方便运维操作直接给的get接口,url中直接传递参数值,现在提出直接get接口操作就修改风险较大,需要给出一个提示框再次确认。
实现方式
-
采用Java的JOptionPane类来实现( javax.swing.JOptionPane)
Java Swing弹出对话框之确认对话框ConfirmDialog -
加入确认框后需要对其添加验证操作才能够有效地进行确认操作
int op=JOptionPane.showConfirmDialog(null, "是否确认修改系统启动时间为"+time, "提示", JOptionPane.OK_CANCEL_OPTION);
if(op==JOptionPane.OK_OPTION){
redisUtils.set(CommonConstants.REDIS_SYSTEM_RUN_TIME, time, RedisUtils.NOT_EXPIRE);
return Ret.ok("修改成功");
}else if(op==JOptionPane.CANCEL_OPTION){
return Ret.ok("取消");
}
问题及解决
-
遇到的问题
导入JOptionPane后运行项目报错 java.awt.HeadlessException: null -
解决方法
1.点击编辑配置,在虚拟机选项框中添加:-Djava.awt.headless=false
2.方法一在打jar包的时候仍然会报错,maven打包时默认这个配置不会添加,可以在启动类中修改
@SpringBootApplication(scanBasePackages = "cn.nr")
@EnableScheduling
public class CoreApplication {
public static void main(String[] args) {
SpringApplicationBuilder builder = new SpringApplicationBuilder(CoreApplication.class);
builder.headless(false).run(args);
}
}
3.修改maven打包配置
maven打包配置修改解决报错java.awt.headless
标题页面显示友好优化
- 字体样式
原弹框很小,且提示内容字体也很小,改变字体后弹框大小也会相应改变,对饮修改代码如下
//字体样式
Font font = new Font("黑体",0,24);
UIManager.put("OptionPane.font", font);
UIManager.put("OptionPane.messageFont", font);
UIManager.put("OptionPane.buttonFont", font);
int op=JOptionPane.showConfirmDialog(null, "是否确认修改系统启动时间为" + time + "\r\n\r\n\r\n", "提示", JOptionPane.OK_CANCEL_OPTION);
if(op==JOptionPane.OK_OPTION){
redisUtils.set(CommonConstants.REDIS_SYSTEM_RUN_TIME, time, RedisUtils.NOT_EXPIRE);
return Ret.ok("修改成功");
}
return Ret.ok("取消修改");