您的位置:首页 > 教程 > JAVA/JAVA编程 > Java使用MessageFormat应注意的问题

Java使用MessageFormat应注意的问题

2022-06-20 10:47:23 来源:易采站长站 作者:

Java使用MessageFormat应注意的问题

目录
问题现象问题排查如何解决

KjL站长之家-易采站长站-Easck.Com

问题现象

某个业务功能需要通过SSH协议执行命令查询一些数据,而某次查询居然没有得到任何结果,导致界面没有任何数据,但是手动执行这个命令又是能够查询到数据的。刨了半天日志也确实没有看到日志里面有什么异常的信息,百思不得其解数据究竟去哪里了???KjL站长之家-易采站长站-Easck.Com

KjL站长之家-易采站长站-Easck.Com

问题排查

看了一段时间还是没有什么头绪,这个时候内心开始慌了。赶紧看了一下提交记录,确认了一下代码不是我写的,于是心里稍稍微淡定了一点,别人问起也好说不是我写的嘛!虽然代码不是我写的,但是问题还是要继续看的。毕竟拿了钱,就要干活的嘛。KjL站长之家-易采站长站-Easck.Com

接下来就只能分析代码了。首先分析了一下最有可能出错的地方,就是解析命令查询的响应逻辑。把这个地方的代码和手动执行命令得到的结果放在一起分析,发现根据这个响应结果是能够正常的得到响应结果的。看了一会儿也确实没有发现问题,又去看了一下命令拼接的代码,拼接的逻辑就一行,应该是不会出问题的。没办法了,又去看了看日志,这个时候发现日志里面有打印发送执行的命令。定睛一看,我擦,咋多了个逗号呢?又揉了揉眼镜,确认自己没有看错误。KjL站长之家-易采站长站-Easck.Com

这个时候再回去看一下代码,怎么看这个 MessageFormat 都有点问题,但是一时又找不到啥证据。KjL站长之家-易采站长站-Easck.Com

public Integer getMaxIndex() {
    // 返回最大的索引值 1035
}
public String queyBySsh() {
    //  这里期望拼接的命令是 show index 1035,但是实际的命令却是 show index 1,035
    // 最终得到的命令多了个英文的逗号 
    String command = MessageFormat("show index {0}", getMaxIndex());
    // 通过SSH执行这个命令查询
}

后来突然想起来之前看到过的一个Wiki,好像有关于描述 MessageFormat 的注意事项。赶紧去找来看一下,果然里面有写到当 MessageFormat 的参数是数字类型时,当数字超过 3 位数字以上时,每隔 3 位会多增加一个因为的逗号。所以根据上面的代码逻辑得到的就是 show index 1,035 了,结果中多了个英文的逗号,而将这个拼接出来的命令手动执行是查不出来数据的。终于破案了,撒花,撒花,撒花!!!KjL站长之家-易采站长站-Easck.Com

KjL站长之家-易采站长站-Easck.Com

如何解决

第一种方法是将数字转为字符串,然后再进行格式化,将上面的代码修改为如下:KjL站长之家-易采站长站-Easck.Com

public String queyBySsh() {
    // 这里拼接的时候先调用一下 String.valueOf() 方法
    String command = MessageFormat("show index {0}", String.valueOf(getMaxIndex()));
}

第二种方法是增加 MessageFormat 的 FormatStyle,将上面的代码修改为如下:KjL站长之家-易采站长站-Easck.Com

public String queyBySsh() {
    // 这里的 # 就是定义的 FamatStyle
    String command = MessageFormat("show index {0, number, #}", getMaxIndex());
}

到此这篇关于Java使用MessageFormat应注意的问题的文章就介绍到这了,更多相关Java MessageFormat 内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!KjL站长之家-易采站长站-Easck.Com

如有侵权,请联系QQ:279390809 电话:15144810328

相关文章

  • Spring Cloud 整合Apache-SkyWalking实现链路跟踪的方法

    Spring Cloud 整合Apache-SkyWalking实现链路跟踪的方法

    什么是SkyWalking 查看官网https://skywalking.apache.org/ 分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。 安装 进入下载页面https://
    2020-06-18
  • 成功解决IDEA2020 Plugins 连不上、打不开的方法

    成功解决IDEA2020 Plugins 连不上、打不开的方法

    IntelliJ IDEA 2020.1 插件中心一直打不开,鉴于有部分同学反馈设置http proxy不能解决,所以可按以下顺序检查 一、设置 http proxy—勾上Auto-detect proxy setting,参照下图,加上地址 http://127.0.0
    2020-06-25
  • Java后台实现微信支付和微信退款

    Java后台实现微信支付和微信退款

    微信支付流程 都是我自己工作中开发的,亲测可用,不喜勿喷。 controller中我是这么写的,你们需要根据自己的业务需求改动。ResponseBean是我自己封装的,你们可以改成你们想要的形式
    2020-03-27
  • IDEA2020 1.1中Plugins加载不出来的问题及解决方法

    IDEA2020 1.1中Plugins加载不出来的问题及解决方法

    进入File-Setting 如图,取消勾选,点击确认后重启,点击了以后等一会就可以正常显示 ps:下面看下解决IDEA 2020.1.1 找不到程序包和符号 问题描述 IDEA 2020.1.1 maven项目build的时候报错,找
    2020-06-28
  • Intellij idea热部署插件JRebel的使用

    Intellij idea热部署插件JRebel的使用

    项目需求,一直用eclipse的我,也要改用IDEA了,一开始,很不习惯。经过几天的慢慢摸索和习惯之后,发现IDEA确实很好用。dark的界面是我喜欢的,智能的提示也让写代码不再枯燥。 遗
    2020-06-25
  • 详解基于IDEA2020.1的JAVA代码提示插件开发例子

    详解基于IDEA2020.1的JAVA代码提示插件开发例子

    之前因为项目组有自己的代码规范,为了约束平时的开发规范,于是基于2019.1.3版本开发了一个代码提示的插件。但是在把IDEA切换到2020.1版本的时候,却发现疯狂报错,但是网上关于
    2020-06-25
  • springboot + rabbitmq 如何实现消息确认机制(踩坑经验)

    springboot + rabbitmq 如何实现消息确认机制(踩坑经验)

    本文收录在个人博客:www.chengxy-nds.top,技术资源共享,一起进步 最近部门号召大伙多组织一些技术分享会,说是要活跃公司的技术氛围,但早就看穿一切的我知道,这 T M 就是为了刷
    2020-07-01
  • JetBrains IntelliJ IDEA 2020安装与使用教程详解

    JetBrains IntelliJ IDEA 2020安装与使用教程详解

    对于JetBrains IntelliJ IDEA 2020的认识 IntelliJ IDEA 2020是一款JAVA编程软件,捷克IntelliJ公司研发推出。该软件提供了一个非常强大的JAVA集成开发环境,不仅添加了对Records的完整代码洞察支持,
    2020-06-28