使用ajax从servlet检索java对象并使用JSTL打印它

时间:2014-12-16 16:09:38

标签: java jquery ajax jsp jstl

当在jsp中更改选项框时,我想对我的TestServlet进行ajax后调用。当这个servlet从ajax中检索到时,servlet将创建一个新的person对象并将其发送回ajax调用来自的jsp页面。

此时我可以使用id uidrespon <div id="uidrespon"></div>在div中打印此对象,但是如何使用JSTL out标记(如<c:out test="${object.name}"/><c:out test="${object.age}"/>

从jsp页面到servlet的Ajax调用:

<script> $(document).ready(function() {   
    $("body").on('change',
    '#personbox', function() {
  //get the selected value
  var selectedValue = $(this).val();

  $.ajax({            type    : 'POST',           url     : '${pageContext.request.contextPath}/secure/TestController.do',
        data  : { "ajaxCallBack" : selectedValue },
        success : function(response) {   
          $('#uidrespon').html(response); 
        },
        error : function(error) {
            alert(error);
        }
    });

  alert(selectedValue);   }); }); </script>

选择下拉列表:

<select class="form-control" id="rulebox" name="selectPerson" onchange="Change()">
     <option value="">Select rule</option>
     <option value="${dePerson.name}">${dePerson.name}</option>
     <option value="${dePerson.name}">${dePerson.name}</option>
</select>

在Servlet中发布方法:

public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException, ServletException {

        String name = req.getParameter("ajaxCallBack");

        Person nwePerson = new Person();
        nwePerson.setThePerson((List<Person>) getServletContext().getAttribute("allPersons"));

        Persons src = nweFact.findPerson(name);

        req.setAttribute("src", src); 
        resp.setCharacterEncoding("UTF-8"); 
        resp.getWriter().print(src);
    }

1 个答案:

答案 0 :(得分:1)

JSTL仅适用于服务器端。 Ajax适用于客户端。你要问的是在ajax请求中从JSTL刷新HTML,这是不可能的。

在响应中以JSON格式或响应类似的方式写入所需数据,而不是将其存储在ajax调用的请求属性中。然后,阅读JavaScript代码中的响应,将其解析为JavaScript对象并使用它。