使用 JSTL 在 JSP 之间传递值

Pass value between JSP using JSTL

所以我在一个 JSP 和一个中有一个表单将数据传递给另一个 JSP 以检查它是否为空。我可以这样做吗?

First.jsp

<form id="search-form" name="search">
                    <input type="text" name="txtSearch" id="search-field">
                    <button type="submit" onclick="<c:set var="search" value="${param.txtSearch}" scope="request"/>"><a href="Second.jsp">SEARCH</a></button>
                </form>

Second.Jsp

<c:set var="search" value="${requestScope['search']}"/>
<c:choose>
        <c:when test="${empty search}">
            <h1>Empty</h1>
        </c:when>
        <c:otherwise>
            <h1>${search}</h1>
</c:otherwise>
    </c:choose>

您在错误的地方检查了请求参数。您应该在与目标资源关联的请求中检查它。 onclick 里面的 <c:set> 没有任何意义。 JSP 生成 HTML 代码。 onclick 只执行 JS 代码。右键单击页面,执行 View Source 并查看 onclick 属性的位置。你有看到?它是空的!此外,HTML link 包裹在 HTML 按钮中也是无稽之谈。您基本上是在生产 invalid HTML。在表单中,您应该在 <form action> 中指定目标资源。

这是一个基本的启动示例:

<form action="Second.jsp">
    <input type="text" name="txtSearch" />
    <input type="submit" value="Search" />
</form>
<c:choose>
    <c:when test="${empty param.txtSearch}">
        ...
    </c:when>
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>

无论如何,我强烈建议您退一步回顾一下您是否真的在使用正确的学习资源来学习 HTTP,HTML 和 JSP。在你的第一次尝试中有一些严重的基本错误。从这里开始:Java EE web development, where do I start and what skills do I need?