操作从servlet传递的jsp页面上的列表

时间:2017-01-10 11:40:29

标签: java jquery ajax jsp servlets

我正在通过链接读取rssfeeds并通过rome api将其填入servlet的列表中

List<freshbean> allrss = new ArrayList<freshbean>();
RssDao rd = new RssDao();
allrss = rd.getAllRssFromUrl("http://feeds.feedburner.com/GeoBulletins");
request.setAttribute("allrss", allrss);
RequestDispatcher reqdisp = request.getRequestDispatcher("WEB-INF/admin/getfeed.jsp");
reqdisp.forward(request, response);

在jsp页面上

<c:forEach items="${allrss}" var="post" varStatus="loop">
    <div id=<c:out value="${loop.index}" />  class="container" >

      <div class="row">
            <h1><c:out value="${post.title}" escapeXml="false" /> </h1> 
            <div class="well well-sm"><c:out value="${post.date}" escapeXml="false" /> </div>
            <div class="well well-sm"><c:out value="${post.link}" escapeXml="false" /> </div>
            <c:out value="${post.description}" escapeXml="false" />
    </div>
    <input type="button" id='<c:out value="${loop.index}" />' value='Delete' class="btn btn-danger btn-block"/>                 
    </div>
</c:forEach>

现在我想给用户一个选项来删除任何想要将剩余对象存储在数据库中的某些提要。 我已经尝试过ajax的删除但是当ajax调用转到servlet列表时allrss是空的

<script type="text/javascript">
$(document).ready(function() {
    $(".btn").click(function() {
        var postid = $(this).attr("id");
        //$(this).val();
        $.ajax({
            url : 'RssServlet',
            data : {
                postid : postid
            },
            success : function() {
                $('#' + postid).hide();
                //alert('in success');
            },
            error : function() {
                alert('in error');
            }
        })
    });
});

我应该采用什么方法将过滤后的数组仅用于用户想要保存的对象的servlet

1 个答案:

答案 0 :(得分:0)

我通过在循环中创建表单并通过ajax提交表单数据来解决此问题,因此用户只能提交所选数据并将剩余部分保留在页面上。

jsp页面

    <c:forEach items="${allrss}" var="post" varStatus="loop">
            <form method="post" action="RssServlet" class="form"
              id='<c:out value="${loop.index}" />'>

              <div class="form-group">
                <label for="title">Title:</label> <input type="text"
                  class="form-control" id="title" name="title"
                  value='<c:out value="${post.title}"/>'>
              </div>
              <div class="form-group">
                <label for="date">Date:</label> <input type="text"
                  class="form-control" id="date" name="date"
                  value='<c:out value="${post.date}"/>'>
              </div>
              <div class="form-group">
                <label for="url">URL:</label> <input type="text"
                  class="form-control" id="url" name="url"
                  value='<c:out value="${post.link}"/>'>
              </div>                  

              <input type='submit' value='Add to database'
                class="btn btn-primary btn-block"
                id='<c:out value="${loop.index}" />'>

            </form>
    </c:forEach>

jsp上的Ajax

$(document).ready(function() {
    $(".form").on('submit', (function(e) {
        e.preventDefault();
        var form = $(this);
        $.ajax({
            url : 'RssServlet',
            type : "POST",
            data : form.serialize(),
            success : function(data) {
                alert('in success');
            },
            error : function(e) {
                console.log('Error: ' + e.message);
            }
        })
    }));

处理servlet中的帖子请求

 String title = request.getParameter("title");
 String date= request.getParameter("date");
 String link= request.getParameter("link");

 Add to database logic