java之请求参数丢失加号

qq78292959 阅读:606 2023-11-05 18:46:41 评论:0

我正在编辑搜索表单并尝试防止数据库中出现特殊字符。在 JSP 搜索表单中,(多选)下拉列表允许用户选择将在查询中使用的描述(注意:描述是字符串列表):

<select id="descriptionSelect" multiple="multiple"> 
    <c:forEach items="${descriptions}" var="description"> 
        <option value="${fn:escapeXml(description)}")}">                             
            <c:out value="${description}" /> 
        </option> 
    </c:forEach> 
</select> 

当表单提交时,页面动态生成 URL,该 URL 在 URL 中接受查询参数(丑陋,我知道,双手被束缚)。这是制作描述片段的片段。

var descriptionSelectBox = document.getElementById("descriptionSelect"); 
var descriptionsUrlAddition = ""; 
 
for (var i = 0; i < descriptionSelectBox.options.length; i++) { 
    if (descriptionSelectBox.options[i].selected) { 
        descriptionsUrlAddition += "&descriptions=" + escape(descriptionSelectBox.options[i].value); 
    } 
} 

我在数据库中有一个测试条目,其描述是:

AAA `~!@#$%^&*()_+-={}|[]\:";'<>?,./哇,这有很多特殊字符。

在上面的代码中,出于某种原因,当请求到达 Controller 时,描述会丢失 + 号(它变成一个空格)。

有谁知道可能会发生什么以及如何解决它?我不确定这是否与 URL 的特殊用途 + 或什么有关。我可以编辑描述列表的填充方式(也许在那里转义)。如果您将此作为建议提供,请使用特定于 Java 的代码(无 Apache 转义实用程序类等)。

如果有帮助,在 JavaScript 中使用警报表明 + 号在发送请求之前没有被转换。

请您参考如下方法:

+ 表示 URL 中的“空格”。将其替换为 %2B。例如,您可以在编写 descriptionsUrlAddition 后立即执行此操作。

descriptionsUrlAddition = descriptionsUrlAddition.replace("+", "%2B"); 


标签:程序员
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

全民解析

全民解析

关注我们