2016-11-22 76 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方法是不可能的 –

相关问题