当在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);
}
答案 0 :(得分:1)
JSTL仅适用于服务器端。 Ajax适用于客户端。你要问的是在ajax请求中从JSTL刷新HTML,这是不可能的。
在响应中以JSON格式或响应类似的方式写入所需数据,而不是将其存储在ajax调用的请求属性中。然后,阅读JavaScript代码中的响应,将其解析为JavaScript对象并使用它。