0
我有一個servlet。它像這樣工作 - 我發送操作名稱,servlet創建操作對象,執行一些任務,然後返回字符串view
作爲結果 - 我應該發送給用戶的頁面。 Servlet的工作原理與doGET
和doPost
相同。使用servlet返回json對象
String name = getActionName(req);
Action action = (Action) pico.getComponentInstance(name);
String view = action.exec(req, resp);
// router
if (view.startsWith("redirect:")) {
resp.sendRedirect(view.substring("redirect:".length(),
view.length()));
} else {
getServletContext().getRequestDispatcher(
"/" + view + ".jsp").forward(req, resp);
}
我有AjaxAction,我從請求中獲取值,從數據庫獲取對象,將其轉換爲json字符串。但如何從行動中回報它? Action返回字符串,代表應該發送用戶的下一個頁面。我把他送到main
頁面。
String requestId = req.getParameter("requestId");
Long id = Long.valueOf(requestId);
Request item = requestDao.read(id);
String json = "";
json = new Gson().toJson(item);
resp.setContentType("application/json");
resp.setCharacterEncoding("UTF-8");
try {
resp.getWriter().write(json);
} catch (IOException e) {
e.printStackTrace();
}
return "main";
我每次我在<select>
改變值(與id = "re"
)發送對JSON對象請求。
$("#re").change(function() {
var $id = $('#re').val();
$.get('AjaxAction.do', {
requestId : $id
}, function(respJSON) {
alert(respJSON);
$.each(respJson, function(key, value) {
$('#' + key).val(value);
});
});
});
但是#alert
都沒有出現,也沒有值#+鍵的變化。所以看起來功能不起作用。 那麼如何從Action中正確返回JSON對象? 我調試器AjaxAction
創建對象和return "main";
。