0

这是我的代码,当我单击超参考链接时,如何保留表单的值。(a href:代码底部)

<form action="APPServlet">
    <div class="">
        <div class="">Search For:</div>
        <div class="">
            <input type="text" size="45" align="right" name="searchRequest">
        </div>
    </div>
    <div class="">
        <div class="">Exclude:</div>
        <div class="">
            <input type="text" size="45" align="right" name="excludeWords">
        </div>
    </div>
    <div class="">
        <div class="">In Modules:</div>
        <div class="">
            <select name="modules">
                <option name="module" value="all">All modules</option>
                <c:forEach var="module" items="${modelObj.modules}">
                    <option name="module" value="${module}">${module}</option>
                </c:forEach>
            </select>
        </div>
    </div>
</form>

<!--  ahref outside the form , this does not work
    &searchRequest=${searchRequest} <- Guess the value is out of scope
-->
<div class="div-table-row">
    <div class="div-table-single-col">
        ${question.id} <a href="APPServlet?id=${question.id}&searchRequest=${searchRequest}">${question.topic}</a>
    </div>
</div>  
4

3 回答 3

1

您有多种可能性,并且都涉及 JavaScript。

  1. 单击链接时,通过将表单输入的所有值附加为 URL 的参数,使用 JavaScript 更改其 href

  2. 单击链接时,在包含问题 ID 的表单中添加一个隐藏字段,更改表单的操作以使其转到 MCQApp 而不是转到 APPServlet,然后提交表单

  3. 最干净的一个:单击链接时,向以 HTML 片段(或数据)响应的 URL 发送 AJAX 请求,并用此 HTML 片段替换您要更新的页面部分,从而将表单保留为它在页面中。

于 2013-03-03T15:28:52.240 回答
0

有两种方法,如果您正在使用会话,请将其存储为会话的属性。但是如果你不使用会话,你可以使用 Cookies,只需将你想要的值存储在一个新的 cookie 中,然后调用 cookie 并获取值。

会话也是 cookie,但它们还有其他功能,cookie 更简单,可以帮助您存储以后可以重用的值。此致

于 2013-03-03T15:29:23.320 回答
0

保持模型中传递的数据并在jsp中使用它,例如,

将所有输入变量保留在搜索模型对象中,并在调用搜索时对其进行更新。在呈现响应之前将 searchRequest 保留在请求属性中。

于 2013-03-03T15:30:25.357 回答