使用Servlet </div>按下一次提交到同一<div>的转发请求

时间:2014-01-07 23:05:39

标签: java javascript html jsp servlets

我有一个带有两个<div>'s的jsp页面,根据选择是使用下拉特定选定值来显示的。

在打开或刷新页面时,默认显示其中一个div。我需要在第二个div上显示一些结果,这不是默认情况。任何人都可以建议。

以下是我目前的代码

  

表格有下拉

<form id='form' method='post' action='/log/'> <input type="hidden" name="pick" value="firstDiv">

<h4>Type of Report</h4> <select id="type" name="choices" onchange="categorySelectHandler(this)">
    <option value="Top">Top Choice</option>
    <option value="Info">Information Choice</option> </select>

第一个div

<div id='firstDivision' style="display: block">
    <h4>By select: <span id="SelectName"> </span></h4>

    //my logic
</div>

第二次DIV ----

<div id='secondDivision' style="display: none">
    <form id='form2' method=post>
        <input type="hidden" name="pick" value="secondDiv">
        <h4>Enter value to get the information below:</h4>
        <select id='identity2' name="info">
            <option value="val1">choice1</option>
            <option value="val2">choice2</option>
        </select>
        <input type="text" name="dynamicText">
            <input type="submit">
        </form>
            //display result logic

       </div>

下拉菜单选择Info后会更改div并显示,现在当我从下拉菜单中选择内容并按下提交按钮时,我需要在该div中显示我的输出。

但是目前,当我点击提交时,它会将我重定向到早期的默认div,如果我然后选择INFO选项,则会显示该页面。

下面是我的servlet代码:

if ("secondDivision".equals(pick)) {
            InformationDAOImpl ad = new InformationDAOImpl();
            PResponse pr = null;

            String selection = req.getParameter("info");
            String inputText = req.getParameter("dynamicText");

            if (selection.equals("val1")) {
                String sql = "Select name, char from table2 where text='" + inputText + "'";
                pr = ad.getProdData(sql);
            } else if (selection.equals("val2")) {
                String sql = "Select name, char from table2 where value2='" + inputText + "'";
                pr = ad.getResult(sql);
            }
            requset.setAttribute("data", pr);
            Util.forward(req, resp, this, "/log/testPage.jsp

&#34);

任何人都可以指导,或建议我如何更改此行并让我自己重定向到相同的div。

我想我需要在这里做出改变

  

Util.forward(req,resp,this,&#34; /log/testPage.jsp");

任何帮助都会很棒。

由于

1 个答案:

答案 0 :(得分:0)

使用常规HTML表单提交时,您无法执行此操作。您需要使用AJAX进行提交,然后使用javascript将响应写入DIV。它与任何请求转发无关。您只需要一个返回一些HTML的servlet,而不是转发回JSP。看一下jQuery中的$ .ajax()函数。

         $.ajax({
             type : "POST",
             url : "/log/",
             data : {
                 //your parameters
             },
             success : function(data)
             {
                 $("#firstDivision").html(data);
             }
         });