spring mvc 应用中用path variable传递小数丢失的解决方法

@AuthPassport 
    @RequestMapping("/OMS315/appr/{qid}/{pid}/{status}/{sn}/{price}") 
    public @ResponseBody String apprBuy(HttpServletRequest request, HttpServletResponse response, 
            @PathVariable("qid") String pvQuotedID, @PathVariable("pid") Long pvProdID, @PathVariable("sn") String pvSN, 
            @PathVariable("price") Double pvPrice, @PathVariable("status") Integer pvStatus) { 
        JSONData lvRet = new JSONData(); 
        try { 
            Map<String,Object> lvParams=getParamsFromRequest(request); 
            String lvRmk=(String) lvParams.get("rmk"); 
            String lvSup=(String) lvParams.get("sup"); 
            ModifyDataException lvErr = module.approveBuy(pvQuotedID, pvProdID, pvSN, pvPrice, pvStatus, 
                    lvSup,lvRmk, 
                    getCurrLogin(request), getLocale(request)); 
            if (lvErr != null) { 
                throw lvErr; 
            } 
            // return JsonUtils.jsonFromObject(lvRet); 
        } catch (Exception e) { 
            BaseModule.jsonDataFillErrMsg(lvRet, e); 
        } 
        return JsonUtils.jsonFromObject(lvRet); 
    } 

上述代码中,如果price为小于1的小数,如0.15,则传递给pvPrice的值为0, 查资料, 必须对{price}点位符进行如下修饰:{price:.+} 

@AuthPassport 
    @RequestMapping("/OMS315/appr/{qid}/{pid}/{status}/{sn}/{price:.+}") 
    public @ResponseBody String apprBuy(HttpServletRequest request, HttpServletResponse response, 
            @PathVariable("qid") String pvQuotedID, @PathVariable("pid") Long pvProdID, @PathVariable("sn") String pvSN, 
            @PathVariable("price") Double pvPrice, @PathVariable("status") Integer pvStatus) { 
        JSONData lvRet = new JSONData(); 
        try { 
            Map<String,Object> lvParams=getParamsFromRequest(request); 
            String lvRmk=(String) lvParams.get("rmk"); 
            String lvSup=(String) lvParams.get("sup"); 
            ModifyDataException lvErr = module.approveBuy(pvQuotedID, pvProdID, pvSN, pvPrice, pvStatus, 
                    lvSup,lvRmk, 
                    getCurrLogin(request), getLocale(request)); 
            if (lvErr != null) { 
                throw lvErr; 
            } 
            // return JsonUtils.jsonFromObject(lvRet); 
        } catch (Exception e) { 
            BaseModule.jsonDataFillErrMsg(lvRet, e); 
        } 
        return JsonUtils.jsonFromObject(lvRet); 
    } 

欢迎交流:1215817408@qq.com

github: https://github.com/songxiaojun

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值