descriptionsUrlAddition

descriptionsUrlAddition

我正在编辑搜索表单,并尝试防止数据库中的特殊字符。在JSP搜索表单中,(多重选择)下拉列表允许用户选择将在查询中使用的描述(注意:description是字符串列表):<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中使用警报表示发送请求之前,+号未进行转换。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 +在URL中表示“空格”。将其替换为%2B。例如,您可以在编写descriptionsUrlAddition后立即执行此操作。descriptionsUrlAddition = descriptionsUrlAddition.replace("+", "%2B"); (adsbygoogle = window.adsbygoogle || []).push({});
09-25 19:19