2016-11-22 119 views
0

我是java web編程的新手。所以,在這裏我所做的, 我已經建立了一個decorator模型,我有一個servlet調用不同類型的模型的方法。不用提交就直接調用servlet並保持在同一個JSP頁面

JSP文件我有一個菜單項目和數量列表爲每個項目。該數量是作爲一個<List> </List>

我需要做的是,每當量變化,叫doPost它調用裝飾類重新計算價格,並在同一個JPS頁面

我嘗試更新的價格使用<select id="id1" name="id1" onchange="document.menu.submit()"doPost被調用,但我被轉發到空白頁!這是servlet頁面。我想更新的價格,並留在同一個JSP頁面

所以,基本上我需要調用servletdoPost或Servlet中的另一個功能和價格迴歸到同一JSP頁面

這是一個快照項目 從JSP

<select id="id1" name="id1" onchange="document.menu.submit()"> 
<option value="0"> 0</option> 
<option value="1"> 1</option> 
<option value="2"> 2</option> 
<option value="3"> 3</option> 
<option value="4"> 4</option> 
<option value="5"> 5</option> 
</select> 
<td> <input type="text" name="totalTxtbox" id="totalTxtbox" style="width:40px;"/> </td> 

從servlet的

private Model model; 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     PrintWriter out = response.getWriter(); 
     int id1=Integer.parseInt(request.getParameter("id1")); 
     double total; 
     total= calculatePrice(id1, id2, id3, id4, id4); // This method handles the price calculation 
     request.setAttribute("totalTxtbox", total); 

    } 

對不起,如果它是微不足道的問題!

+0

看看jquery –

+0

不,但我會檢查它。謝謝 –

回答

1

,您可根據Asynchronous Call到你的servlet。

AJAX是Asynchronous JavaScript和XML的首字母縮寫。它是一組相互關聯的技術,如JavaScript,DOM,XML,HTML,CSS 等 等。AJAX允許您異步發送和接收數據,而不需要 重新加載網頁。所以速度很快。

AJAX允許您僅向服務器發送重要信息而不是整個頁面上的 。因此,只有來自客戶端的有價值數據被路由到服務器端 。它使您的應用程序更具互動性和更快

您只需要一些JavaScript。


例如,你想將數據發送到servlet的URL爲servlet.ajx,你想送兩個變量userIditemId,那麼你就可以在你的JSP頁面寫這個。

<head> 
    <!-- ... --> 
    <script src="path/to/jquery.js" type="text/javascript"></script> 
    <script> 
     function doSubmit() { 
      $.ajax({ 
       type: 'POST', 
       url: 'servlet.ajx', 
       data: 'userId=' + userid + '&itemId=' + itemId, 
       error: function(response) { 
        // Gets called when an error occurs with error details in variable response 
       }, 
       success: function(response) { 
        // Gets called when the action is successful with server response in variable response 
       } 
      }); 
     } 
    </script> 
</head> 
+0

謝謝,但我需要更精確的答案。我從來沒有使用AJAX –

0

有沒有一種簡單快捷的方式讓您回發到服務器,並只需更新整個字段。據我所知,這是第3種最流行的方式來得到你所需要完成什麼:

  1. JSP - 表達式語言(EL) - 這需要您刷新 頁面和,而這樣做,填補在與用戶 鍵入的字段中。爲此,您需要捕獲所有輸入數據,並通過Request或Session屬性將其返回到JSP頁面。

  2. AJAX - AJAX可以更新服務器數據 HTML頁面的部分,而無需刷新整個頁面。

  3. JavaScript - 現在大多數情況下,數據編輯都是使用JavaScript在 客戶端完成的。在你的情況下,如果你在頁面上已經有了你需要的數據,這可能會使你感覺最多。它可能是 就像一個或兩個行JavaScript函數一樣簡單(例如, calcTotals),通過將您的提交更改爲: onchange =「calcTotals();」我不是JavaScript專家,但是,如果這是 所有你正在嘗試做的事情,我會先嚐試。

+0

我認爲(1),但它不是一個很好的方法來重新加載頁面的每一個變化。 (2)我需要閱讀關於Ajax(從未使用它)。 (3)我讀過從javascript調用servlet方法是不可能的 –

相關問題