【问题标题】:How to pass data between JSP Pages using JSTL?如何使用 JSTL 在 JSP 页面之间传递数据?
【发布时间】:2018-08-08 08:49:42
【问题描述】:

我有 3 个 JSP 页面,我们称之为 First.jsp Second.jsp Third.jsp。我想将数据从 First.jsp 移动到 Third.jsp。我知道您可以使用<form action=".jsp" method="post"><c:redirect url=.jsp> <c:param name= value=> </c:redirect> 移动数据,但是只有在两个页面相互连接时才能使用 i.ex First.jsp 和 Second.jsp。

我已经尝试过来自 Link 的解决方案。但是,我并没有真正得到使用<a ref/> 的第一个解决方案。但我试过了,它不起作用。第二种解决方案就像我上面提到的那样。如果我没记错的话,第三和第四个解决方案是不使用 JSTL。

在我的代码中,我想将在 First.jsp 的下拉列表中选择的选项移动到 Third.jsp

这是我的下拉列表代码

<s:setDataSource var="ds" driver="com.mysql.jdbc.Driver"
                 url="jdbc:mysql://127.0.0.1:3306/project?useLegacyDatetimeCode=false&serverTimezone=Asia/Pontianak&useSSL=false"
                 user="root" password="root"/>

<s:query dataSource="${ds}" var="resultseta">
    SELECT DISTINCT departureto, departurefrom FROM schedule
</s:query>

<body>

        From:
        <SELECT class="drop" style="WIDTH: 143px" id="departfromcmb" name="departfromcmb">
            <option value="">Select your location</option>
            <c:forEach items="${resultseta.rows}" var="departfromrow">
                <option value="${departfromrow.departurefrom}"> ${departfromrow.departurefrom} </option> //i would like to pass this data to third.jsp
            </c:forEach>
        </SELECT> <br><br>

        To:
        <SELECT class="drop" style="WIDTH: 150px" id="departtocmb">
            <option value="">Select your destination</option>
            <c:forEach items="${resultseta.rows}" var="departtorow">
                <option> ${departtorow.departureto}</option> //i would like to pass this code to third.jsp
            </c:forEach>
        </SELECT> <br><br>

</body>

【问题讨论】:

  • 这可能过于宽泛,并且有多个解决方案的重复项。尝试在会话中存储数据或使用隐藏输入。
  • 是的,据我所知,在会话中存储数据不是 JSTL。我已经尝试了其他问题的几种解决方案。不幸的是,他们都没有工作。
  • 我已经编辑了我的问题。并在发布此问题之前放置引用我已阅读的解决方案的链接
  • ...你可以使用&lt;c:set var="..." value="..." scope="session" /&gt;
  • ...但我建议使用控制器来解决这个问题。或者,如果可以的话,看看 JSF。

标签: jsp jstl


【解决方案1】:

所以,把所有来自 cmets 的东西放在一起:

第 1 页

在此页面上,您可以将表单发布到第 2 页:

<form action="page2.jsp" method="post>
  <input name="foo"/>
</form>

第 2 页

这里我们将发布的表单字段设置为会话属性:

<c:set var="bar" value="${param.foo}" scope="session"/>

第 3 页

这里我们输出上一页设置的会话属性:

<c:out value="${sessionScope.bar}"/>

请注意,除了 在这里扮演着重要角色。会话属性可通过隐式对象获得。

见,https://stackoverflow.com/tags/el/info

【讨论】:

  • 在我完成了所有这些试验和错误之后。我发现如果你使用&lt;c:redirect&gt;&lt;a href&gt; 而不是&lt;form action&gt;c:set 可以工作。这就是为什么我最终改用&lt;input value = hidden &gt; 的原因,因为我必须在第一页和第二页都使用&lt;form action&gt;
  • 你在说什么?那些会议不适合你?
  • c:set 不适用于 form action method&gt; 。我在第一页中放入c:set 的内容无法在第二页中检索到。只有当我使用&lt;c:redirect&gt;&lt;a href&gt; 访问第二页时它才有效
  • 我在首页没有看到c:set
  • 这是一个例子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
相关资源
最近更新 更多