第一種方式比較靈活,如果沒有走判斷還是能返回視圖,推薦使用
writer(),只能打印輸出文本,不可以打印對象,print(),不僅可以打印輸出文本,還可以將一個對象以默認的編碼方式轉換爲二進制字節輸出
在servlet中的話,PrintWriter是不必關閉的,因爲response會幫你關閉,如果自己用PrintWriter的話,還是得關閉。順帶說一句,調用close時已經隱式地調用flush了
@RequestMapping(value = "/items/new", method = RequestMethod.POST)
public String handleCreate(@Valid @ModelAttribute("form") RedeemItemForm form, BindingResult bindingResult,Model model,HttpServletResponse response) {
if(!bindingResult.hasErrors()){
crmFacade.upsertGoodsSpecsBatch(goods);
String result = "<script language='javascript'>" +
"if(confirm('需要前往設置庫存嗎')){" +
"window.location = '/points/redeem/items/stock/" +redeemItem.getId()+"'}"+
"</script>";
response.setContentType("text/html; charset=UTF-8");
response.getWriter().write(result);
}
return "redeem-item-edit";
}
第二種方式不推薦使用
@ResponseBody
@RequestMapping(value = "/items/new", produces = "text/html; charset=UTF-8")
public String handleCreate() {
crmFacade.upsertGoodsSpecsBatch(goods);
result = "<script language='javascript'>" +
"if(confirm('需要前往設置庫存嗎')){" +
"window.location = '/points/redeem/items/stock/" +redeemItem.getId()+"'}"+
"</script>";
return result;
}