将查询保留在搜索栏中,但使用占位符作为初始默认值
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="<%=request.getParameter("search")%>"
是给你空指针异常并导致它最初为空的原因。由于它们最初没有获取参数(未设置),因此值为空。值应该是“”或最初没有值,并在用户输入内容后更改。您可以使用 php、javascript 或其他语言来执行此操作。如果 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
替换<%=request.getParameter("search")%>
您将不再收到 null。这个 EL(表达式语言)。添加它不需要额外的库,它会正常工作。 这一点我可以用我的亲身经历告诉你。
【讨论】:
以上是关于将查询保留在搜索栏中,但使用占位符作为初始默认值的主要内容,如果未能解决你的问题,请参考以下文章