1
在继续之前,我发现几年前还有一个类似的问题(Passing a List from Servlet to JSP)。我意识到可以设置我想要作为会话属性传递的列表,但出于好奇,我想知道是否可以使用PrintWriter对象将数据发回JSP页面。使用PrintWriter对象将List对象从Java Servlet发送到JSP?
JSP
<script type="text/javascript">
function getEngineSchemes(engineID) {
$.get('SchemeTypeServlet', {
action: "getSchemes",
engineID: engineID
},
function(data, status){
}).fail(function() {
alert("Error obtaining schemes for engine with engine id: " + engineID);
});
}
</script>
</body>
的Servlet
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Set type of response
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
//get parameters that may be passed from client to determine which methods should be called
String action = request.getParameter("action");
if(action.equalsIgnoreCase("getSchemesForEngine")) {
Integer engineID = Integer.parseInt(request.getParameter("engineID"));
List<String> schemeNames = getSchemeNamesForEngine(engineID);
response.getWriter(). //insert code to send object back to JSP
response.getWriter().flush();
}
选项
一个解决方案我认为可能是合理的。将创建一个JSONObject
和沿的
response.setContentType("application/json");
JSONObject json = new JSONObject();
for(String name : schemeNames) {
json.put(engineID, name);
}
response.getWriter().write(json.toJSONString());
response.getWriter().flush();
线的东西我没有测试上面的代码,但我只是想知道,如果这似乎是我的问题,或者最好的解决办法我让它过于复杂?也许我的问题有一个更简单的解决方案。
是的,您可以将数据从Servlet发回JSP页面,因为我已经这样做了。在JSP文件中,您可以包含HTML和JavaScript,因此您可以使用JQuery.post(),它允许您指定一个Servlet将数据发布到回调函数中,并在回调函数中使用,例如: ... }) (内容); });函数(数据)var content = data [ 你可以利用从Servlet获得的结果填充html元素。 –