redirect重定向的url中存在中文字符转码的解决方法

本文介绍了一个关于URL中汉字被错误转义的问题,并给出了使用URLEncoder进行正确转义的解决方案。
部署运行你感兴趣的模型镜像

假设如下情景

@RequestMapping(value = "saveData")
    public String saveData(GeneralList generalList, Model model, RedirectAttributes redirectAttributes) {
        if (!beanValidator(model, generalList)){
            return form(generalList, model);
        }
        generalListService.saveData(generalList);
        return "redirect:"+Global.getAdminPath()+"/demo/form?"&className="+ generalList.getClassName();
    }

这里传过来的参数对象中班级名名属性值为“音乐学151”

通过debug发现 ,该方法直到最后一步重定向,属性值仍为音乐学151,但当跳转到下一个form函数时,数据接收值为“151”,丢失了其中的汉字。

一步一步跟踪可发现在接收的request中,该值被转义为类似”%85%45%151”形式的字符,然后接收url值时未将汉字字符转义回来。给出如下解决方法:

@RequestMapping(value = "saveData")
    public String saveData(GeneralList generalList, Model model, RedirectAttributes redirectAttributes) throw UnsupportedEncodingException{
        if (!beanValidator(model, generalList)){
            return form(generalList, model);
        }
        generalListService.saveData(generalList);
        return "redirect:"+Global.getAdminPath()+"/demo/form?"&className="+ URLEncoder.encode(generalList.getClassName(),"UTF-8");
    }

java提供了一个类URLEncoder把string转化为恰当的url编码,该类不用初始化,经转化后的编码能被url对象成功识别,从而成功完成重定向操作。

您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值