弄了一天的LayUI,虽然还是懵懵懂懂,也是在GitHub上Check下来的模板改,完成了基础的前后端增删改查。下面记录一下我碰到的问题吧。
获取$(pageContext.request.contextPath)
在JS中,我发现不能直接引用这个,所以导致我最开始的JS全是写在JSP里面 ,代码非常的乱。
在JSP中加一句
<input type="hidden" id="context" value="${pageContext.request.contextPath}">
然后我们就可以在对应的JS文件中直接去获取context,作为字符串来使用
var context= document.getElementById("context").getAttribute("value")
我也碰到了路径的问题,建议最好不要把JS文件放在Web-inf下,因为真的很难访问,我查了很多都没有看到,没有表情(很难受)。JSP的话可以通过Action在配置文件中通过视图解析器来进行访问。
获得对象的json字符串传回后台,无法转换Date型数据
前端的代码:
form.on("submit(changeUser)",function(data){ var index = layer.msg('提交中,请稍候',{icon: 16,time:false,shade:0.8}); var userInfoHtml = ''; userInfoHtml = { 'id':$(".id").val(), 'password':$(".password").val(), 'created':$(".created").val(), 'username' : $(".layui-disabled").val(), 'sex' : data.field.sex, 'status' : data.field.status, 'phone' : $(".userPhone").val(), 'email' : $(".userEmail").val() }; var json=JSON.stringify(userInfoHtml); window.location=stringfy+"/user/editOneUser?json="+json; setTimeout(function(){ layer.close(index); layer.msg("提交成功!"); },2000); return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。 })
碰到的错误有很多 忘记截了
Request processing failed; nested exception is com.google.gson.JsonSyntaxException
一个就是Jackson好像不能解析,我就换成Gson.Gson之后就变成 java.lang.NumberFormatException
还是我的JavaBean实体类里的日期是Date类型,我换了一个实体类,把Date类型的那个参数换成String,类型的,就可以接收到我传的Json字符串了。在通过把收到的实体类TBUserTest数据加入原来的实体类TBUser中。
public String editOneUser(String json) throws IOException, ParseException { //Jackson解析JSon字符串,因为Date类型,后面总会有我解决不了的错, // ObjectMapper objectMapper = new ObjectMapper(); // TbUser tbUser=objectMapper.readValue(json, TbUser.class); Gson gson=new GsonBuilder() .setDateFormat("yyyy-MM-dd HH:mm:ss") .create(); TBUserTest tbUser = gson.fromJson(json, TBUserTest.class); TbUser user=new TbUser(); SimpleDateFormat sfEnd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sfStart = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",java.util.Locale.ENGLISH) ; String format = sfEnd.format(sfStart.parse(tbUser.getCreated())); System.out.println(format); Date date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(format); user.setStatus(tbUser.getStatus()); user.setCreated(date); user.setUpdated(new Date()); user.setEmail(tbUser.getEmail()); user.setId(tbUser.getId()); user.setPassword(tbUser.getPassword()); user.setUsername(tbUser.getUsername()); user.setSex(tbUser.getSex()); user.setPhone(tbUser.getPhone()); userService.editUser(user); return "/page/user/userList"; }然后不是很完美的解决了我的最后一个问题