如何在不刷新的情况下创建运行jsp scriplet的搜索按钮?

时间:2016-07-29 11:56:06

标签: java html jsp

我正在尝试编写一个从数据库生成产品列表的代码,目标是当您单击搜索按钮时,满足搜索的产品列表会显示在特定DIV上(我有鉴于div为id)。我尝试使用结合javascript和java(并且失败)的平庸方法。 我想在点击搜索按钮时运行第二个scriplet(我在代码中标记了它),以便 div1 中的内容被这些替换,但我不知道如何重定向结果到div1,并且由于某种原因它在运行期间总是显示空输入这是我当前的代码(连接等由自定义bean处理)对不起我是编程新手,但如果可能的话请给出具体步骤:                                 

搜索产品

    <br><br>
    <div class ="col-sm-4">
    <label> Search By ID </label>
    <br>
    <input name ="s1" id="e1" type ="text" class ="input-lg"  placeholder= "search ID"/>
</div>
<div id="div1">   
<%
        Set rs = Etn.execute("select * from products");
        while(rs.next()){
            %><div class="big"><label><%
        out.write(rs.value("id")+"<br>");
        out.write (rs.value("image_name")+"<br>");
        out.write(rs.value("image_actual_name")+"<br>");
        out.write(rs.value("product_type")+"<br><br>");
            %></label><br><input type="checkbox" /></div><%
        }

    %>       

</div>


<%  // this one-->>
    if(request.getParameter("b1")!=null){
    String abc=request.getParameter("s1");
    if(abc==null){}
    else{
    Set rs2 = Etn.execute("select * from products where id = '"+abc+"'");
        if(rs2.next()){
        out.write(rs2.value("id")+" ");
        out.write (rs2.value("image_name")+"<br>");
        out.write(rs2.value("image_actual_name")+" ");
        out.write
   (rs2.value("product_type")+"<br><br>");
        }  

 }
    }
 %>

1 个答案:

答案 0 :(得分:1)

我会用不同的方法。生成搜索结果的scriptlet应该位于单独的JSP-File中。然后,通过AJAX,您可以向服务器创建不同的请求,例如div1,并修改服务器以使用之前创建的JSP对此做出响应。在此生成的HTML中,应该只有<div>的新内容,然后您可以将其直接插入jQuery.fn.dataTableExt.oApi.fnStandingRedraw = function(oSettings) { if(oSettings.oFeatures.bServerSide === false){ var before = oSettings._iDisplayStart; oSettings.oApi._fnReDraw(oSettings); // iDisplayStart has been reset to zero - so lets change it back oSettings._iDisplayStart = before; oSettings.oApi._fnCalculateEnd(oSettings); } // draw the 'current' page oSettings.oApi._fnDraw(oSettings); }; $(document).ready(function() { var table = $('#example').dataTable() table.fnStandingRedraw(); } );