将查询保留在搜索栏中,但使用占位符作为初始默认值

Posted

技术标签:

【中文标题】将查询保留在搜索栏中,但使用占位符作为初始默认值【英文标题】:Keep query in search bar, but use placeholder for initial default value 【发布时间】:2016-10-02 14:31:00 【问题描述】:

我有一个搜索栏,可以根据我输入的内容返回匹配的数据。为了使其用户友好,即使在按下提交后,我也将输入值保留在栏中。但是,当我最初加载我的页面而没有进行任何搜索时,会出现“null”而不是我的占位符。首次运行页面时如何使占位符成为默认值?当我运行我的项目时,我也有一个 NullPointerException,我想知道这是否相关。

这里是搜索条码:

<form method="post" id="form1" action="index.jsp">

        Search <input type="text" name="searchRequest"
            placeholder="Enter your search here..."
            value="<%=request.getParameter("search")%>" /> <input type="submit"
            id="button1" value="Search" name="submit" />


    </form>

【问题讨论】:

【参考方案1】:

对我来说很明显value="&lt;%=request.getParameter("search")%&gt;" 是给你空指针异常并导致它最初为空的原因。由于它们最初没有获取参数(未设置),因此值为空。值应该是“”或最初没有值,并在用户输入内容后更改。您可以使用 phpjavascript 或其他语言来执行此操作。如果 request.getParameter() 允许您使用默认参数,您应该将其设置为“”,或者您应该让搜索 url 最初有一个空字符串参数。他们有很多方法可以让您的行为建模。

【讨论】:

【参考方案2】:

执行此操作的一种方法是您可以先检查 null。为此,请下载 jstl-1.2.jar 文件,将其放入 WEB-INF/lib 并使用以下代码修改您的 jsp。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> // add at start of jsp page


<form method="post" id="form1" action="index.jsp">
    Search <input type="text" name="searchRequest" placeholder="Enter your search here..." <c:if test="$request.getParameter != null">value="<%=request.getParameter("search")%>"</c:if> /> 
    <input type="submit" id="button1" value="Search" name="submit" />
</form>

【讨论】:

【参考方案3】:

而不是写长代码只需将$search替换&lt;%=request.getParameter("search")%&gt;

您将不再收到 null。这个 EL(表达式语言)。添加它不需要额外的库,它会正常工作。 这一点我可以用我的亲身经历告诉你。

【讨论】:

以上是关于将查询保留在搜索栏中,但使用占位符作为初始默认值的主要内容,如果未能解决你的问题,请参考以下文章

如何错误检查包含带有占位符 %s 的 SQL 查询的函数

将 PDO 与 PostgreSQL 一起使用时如何忽略问号作为占位符

Ransack 搜索表单将搜索替换为“占位符”

rails 3 sqlite 通过占位符在查询中传递数组

更改占位符字体,在搜索栏下方移动芯片/标签

使用空占位符将图像插入幻灯片(PowerPoint)