【问题标题】:How to add parameters to request in JSP page?如何在 JSP 页面中为请求添加参数?
【发布时间】:2014-03-02 22:51:15
【问题描述】:

我必须向 GET 方法添加用户选择的两个日期。
我怎样才能做到这一点,以后有机会在 servlet 中提取它?

jsp页面中的代码sn-p:

<p class="text-left">
  <strong><fmt:message key="apartments.arrival"/>:</strong> <input type="text" id="arrivaldate" name="arrivaldate"/> <br/>
  <strong><fmt:message key="apartments.depart"/>:</strong> <input type="text" id="departdate" name="departdate"/> <br/>
  <strong><fmt:message key="apartments.price"/>:</strong> ${apartment.price} <br/>
</p>
<a class="btn btn-primary btn-large btn-block"
                       href="<c:url value="/purchase?apartment=${apartment.id}"/>"><fmt:message key="button.book"/>
</a>

我必须接受arrivaldate + departdate

使用 JQuery 日期选择器选择日期。

我想做以下事情:

  • 取用户在JSP页面输入的两个数据值
  • 设置为 URL 的参数
  • 在 servlet 端进入doGet() 提取这两个值。最好避免使用表单,我想将此请求放入doGet()

更新:

这是整页的内容 - apartments.jsp

如何解决这个问题?

【问题讨论】:

  • 你能改写你的问题吗?这有点令人困惑。另外,您可以发布整个表单的代码吗?
  • 我不明白你的问题。您是否需要从用户请求或 Servlet 生成 URL 以将其显示在您的视图 (JSP) 中/在链接的 href (&lt;a&gt;) 中使用它?

标签: java jsp jstl


【解决方案1】:

您可能想要的是覆盖 Servlet 的方法 doGet(如果您还没有这样做)并检索 GETparameters 为

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Stirng arrivaldate = request.getParameter("arrivaldate");
    Stirng departdate = request.getParameter("departdate");
    Stirng id = request.getParameter("apartment");
}

更新: 看着你的apartments.jsp,我发现了问题所在。您没有使用任何表单标签,并且您的按钮 button.book 具有硬编码的 GET 参数。这就是为什么不提交apartment以外的参数的原因。

要修复它,您将不得不用 form 标签包装行 74 to 81 的内容,如下所示:

<form action="/purchase" method="GET">
    <p class="text-left">
        <strong><fmt:message key="apartments.arrival"/>:</strong>
        <input type="text" id="arrivaldate" name="arrivaldate"/> <br/>
        <strong><fmt:message key="apartments.depart"/>:</strong>
        <input type="text" id="departdate" name="departdate"/> <br/>
        <strong><fmt:message key="apartments.price"/>:</strong> ${apartment.price} <br/>
    </p>
    <input type="hidden" id="apartment" name="apartment" value="${apartment.id}"/>
    <input class="btn btn-primary btn-large btn-block" type="submit" value="Submit" />
</form>

【讨论】:

  • 您也可以在 JSP 文件中的老式 JSP-Tag 中执行此操作,例如 &lt;% Stirng arrivaldate = request.getParameter("arrivaldate"); %&gt;,这样可以避免创建新的 Servlet 子类。
  • @Trein 我试过了 => System.out.printf("arrival: %s\ndepart: %s%n", request.getParameter("arrivaldate"), request.getParameter("departdate")); at doGet() => arrival: null depart: null 输出到控制台。这种方法行不通。
  • @nazar_art 我很确定它有效。您可以发布您的 HTML 表单的代码吗?
  • @nazar_art 我已经更新了答案。现在我明白你为什么在Servlet 一侧得到null。我假设你的JSP 页面上有一个form
  • @Trein 只有这个&lt;input type="text" id="apartment" name="apartment" value="${apartment.id}"/&gt; 应该只是纯文本而不是输入字段。
【解决方案2】:

试试这个方法来获取你的到达日期+离开日期。

$("#from_date").datepicker({
    minDate   : 0,
    onSelect: function() {
        var minDate = $(this).datepicker('getDate');
        minDate.setDate(minDate.getDate());
        $("#to_date").datepicker( "option", "minDate", minDate);
    }
});

$("#to_date").datepicker({
    minDate: 0
});

fiddle demo to click here.

【讨论】:

  • 如何在servlet端提取这个变量值?
【解决方案3】:

我认为您的示例可能来自 JavaScript 页面?

如果你有以下网址:

blah.com/home?name=blah

您可以使用各种语言(PHP、JavaScript、Java)然后执行 getParam("name"),这将返回 blah

您还可以查看一个休息服务,您可以在其中使用以下 URL 执行 URL 参数。

blah.com/home/blah

你有类似这样的java代码

@GET
@Path("/home/{name}")
@Produces("text/html")
public String Test(@URLParam String name) {
   return name;
}

用Java回答的原因问题有java标签。

【讨论】:

  • 实际上根据 JSTL 标签,似乎他正在使用 JSP,没有任何迹象表明他有 JAX-RS 后端。我认为他想要一个使用 JSP/Servlets 的解决方案。
  • @djc391 我纠正了这个误解。我当然需要 jsp 页面的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
相关资源
最近更新 更多