2014-03-02 75 views
-2

我必须添加到GET方法二由用户选择的日期选择。我怎么能做到这一点,有机会从servlet中提取它。从JSP页面如何添加参数到GET url?

代码片段:

<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()

UPDATE:

以下是完整的页面上下文 - apartments.jsp

如何解决这个问题?

+0

你能改一下你的问题吗?这有点令人困惑。另外,你可以发布整个表单的代码吗? – Trein

+0

我不明白你的问题。你是否需要从用户请求或Servlet生成URL以将其显示在视图(JSP)中/在链接的'href'中使用它('')? –

回答

2

也许你想要的是覆盖你的Servlet(如果你还没有做到这一点的话),并检索GET参数

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"); 
} 

更新方法doGet: 看你apartments.jsp,我想通了问题。您没有使用任何表单标签,并且您的按钮button.book的参数硬编码为GET。这就是为什么没有提交apartment以外的参数。

要解决它,你将不得不换行74 to 81的内容与form标签,就像这样:

<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> 
+0

您也可以在JSP文件中使用'<%Stirng arrivaldate = request.getParameter(“arrivaldate”); %>'这应该可以让你避免创建一个新的'Servlet'子类。 – user3001

+0

@Trein我试图它=>'System.out.printf( “到达:%S \ ndepart:%S%N”,用request.getParameter( “arrivaldate”),用request.getParameter( “departdate”));在' doGet()=>'arrival:null depart:null'输出到控制台。这种方法不起作用。 –

+0

@nazar_art我很确定它的工作原理。你能发布你的HTML表单的代码吗? – Trein

0

我想也许你的例子来自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标记。

+1

实际上根据JSTL标签,似乎他使用的是JSP,没有任何信息告诉我们他有一个JAX-RS后端。我想他想要一个使用JSP/Servlets的解决方案。 – Trein

+0

@ djc391我解决了这个误解。当然,我需要jsp页面的解决方案。 –

0

只是尝试这种方法来获得你的arrivaldate + departdate。

$("#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.

+0

如何在servlet端提取这个变量值? –