【问题标题】:Filter string in jsp not working with bracket [ ]jsp中的过滤器字符串不适用于括号[]
【发布时间】:2013-01-13 04:28:45
【问题描述】:

我有一个 jsp 页面,它向 servlet 发送请求,以根据选定的下拉值过滤表中列的结果,该下拉值由对 MSSQL 数据库的 SQL 查询填充。现在我遇到了下拉列表中的一个项目有括号( something[something] )的问题,并且由于某种原因,当我选择该项目并过滤表格时,即使很明显有它也不会返回任何结果在过滤器之前与该项目一起显示的数据行。这是我现在在 jsp 页面上的过滤器下拉列表:

<select title="Something Filter" name="${MODULE.REQUEST_SOMETHING}"
    id="${MODULE.REQUEST_SOMETHING}" tabindex="30"
    onkeydown="typeSelect(this, -1, 'xbin', 1);" onchange="clearTTID();"
    onblur="clearTTID();">
    <option value=""></option>
    <c:forEach items="${requestScope.something}" var="row">
        <option value="${row.something}"
            <c:set var="setSelected" value="${row.something }" />
            <c:if test="${requestScope.something eq setSelected}">selected</c:if>
        >${row.something}</option>
    </c:forEach>
</select>

所有其他项目都可以正常工作,只有文本、数字或括号,过滤器将按预期按这些项目过滤表格。

【问题讨论】:

  • 你能发布你的SQL吗?你试过什么?

标签: java sql jsp


【解决方案1】:

您需要使用[] 转义左括号[。因此,如果您要查找名称 t[t],您的查询将是

select * from student where name like '%t[[]t]%'

更新

第二种方法是在左括号[ 上使用转义选项(这对我来说是新的,WOOHOO)

select * from student where name like '%t\[t]%' escape '\'

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多