2014-03-02 106 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端提取這個變量值? –