在angular js训练中遇到了一个难题:(乱码)
或许大家都会说好简单的问题,可是这是一个逻辑上的错误
该错出现在书籍修改的时候,BookEditCtrl控制器起的作用是获取数据库制定的书籍的数据和将编辑后的数据传递到
后台,在这个过程中,我遇到修改后的数据是乱码的,原程序为:
int id = Integer.parseInt(request.getParameter("id"));
String bookStr = request.getParameter("test");
BookService bookService=new BookService();
if("".equals(bookStr)||bookStr==null){
List<Map<String,Object>> bookTypeList= bookService.selectSomeBookById(id);
List<Book> list = new ArrayList<Book>();
for(int i = 0; i < bookTypeList.size(); i ++)
{
Book book = new Book();
book.setId(Integer.parseInt(bookTypeList.get(i).get("id").toString()));
book.setAuthor(bookTypeList.get(i).get("author").toString());
book.setBookName(bookTypeList.get(i).get("bookName").toString());
book.setBookType(bookTypeList.get(i).get("bookType").toString());
book.setPublicationDate(bookTypeList.get(i).get("publicationDate").toString());
book.setPrice(Double.parseDouble(bookTypeList.get(i).get("price").toString()));
list.add(book);
}
JSONArray jsonArray = JSONArray.fromObject(list);
PrintWriter out = response.getWriter();
out.print(jsonArray);
}else{
JSONObject obj = JSONObject.fromObject(bookStr);
Book book = (Book)obj.toBean(obj, Book.class);
System.out.println("book1 : "+book.getAuthor()+" "+book.getBookName()+" "+book.getBookType());
int flag = bookService.updateBookById(id, book);
String message;
if(flag==-1){
message = "更新失败";
}else{
message = "更新成功";
}
PrintWriter out = response.getWriter();
out.print(message);
}
}
就是以上的代码,在红色的区域获取bookStr的值然而为空,所以转码换成String bookStr = new String(request.getParameter("test").getBytes("ISO-8859-1"),"utf-8");
最后不能加载数据了。仔细看了下子逻辑,想清楚了原因,在http中加了个参数
$http({
method : 'post',
url : '/AngularJsDemo/BookEdit',
params : {id:$stateParams.id,actionType:'get'
},
绿色的判断语句换成了if("get".equals(actionType)){ }
最终解决。s