项目疑难杂症
来源:互联网 发布:促销规则 数据库设计 编辑:程序博客网 时间:2024/06/03 19:00
1、在jsp页面进行异步请求时不知道为什么访问不到资源
$.ajax({ url:'<%=request.getContextPath()%>/house/findLastPropertyPay.do',type : 'post',data : 'houseId=' + value,async : false,dataType : 'json',success : function(data) {//清空二级分类下拉框$("#startTime").html(data.lastPropertyPay);},error : function() {alert("error");}});
而houseCOntroller里的findLastPropertyPay也配置了映射路径/** * 根据房屋id查找该房屋的最后缴费时间 */@ResponseBody //经检查,是这个注解没有写,至于为什么,还不知道@RequestMapping(value="/findLastPropertyPay")public String findLastPropertyPay(HttpServletResponse res) throws Exception{logBefore(logger, "查找该房屋");ModelAndView mv = this.getModelAndView();PageData pd = new PageData();try {pd=this.getPageData();pd=houseService.doFindLastPropertyPay(pd);} catch (Exception e) {logger.error(e.toString(), e);}return JsonUtil.toJson(pd);}
@Responsebody与@RequestBody
@responseBody注解的使用
1、
@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML
数据,需要注意的呢,在使用此注解之后不会再走处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
2、
@RequestMapping("/login")
@ResponseBody
public User login(User user){
return user;
}
User字段:userName pwd
那么在前台接收到的数据为:'{"userName":"xxx","pwd":"xxx"}'
效果等同于如下代码:
@RequestMapping("/login")
public void login(User user, HttpServletResponse response){
response.getWriter.write(JSONObject.fromObject(user).toString());
}
2、根据标签是否为空,来显示或不显示日期选择器
如果根据房屋刷新出时间,则是只读,不能修改时间;若没有时间,则可以输入。
function showWdatePicker(){if($("#startTime").val()==""){WdatePicker({isShowClear:false,readOnly:true,dateFmt:'yyyy-MM-dd'});}}最开始这样写,判断startTime这个标签是否为空,若为空,则可以弹出时间选择器;但是这样有个问题,一旦选择之后,标签不为空,就不可以再修改了,即只能输入一次。
所以,应该从返回的数据出发,去判断异步刷新返回的数据是否为空。而此时,则要用到全局变量。
$.ajax({ url:'<%=request.getContextPath()%>/house/findLastPropertyPay.do',type : 'post',data : 'houseId=' + value,async : false,dataType : 'json',success : function(data) {//清空二级分类下拉框$("#startTime").val(data.startTime);test=data.startTime;},error : function() {alert("error");}});
function showWdatePicker(){if(test==null){WdatePicker({isShowClear:false,readOnly:true,dateFmt:'yyyy-MM-dd'});}}
但是到了房屋管理里新增缴费时,却又不行了,并且也分为第一次缴费和缴过费的
var startTimeValue=null;//定义一个js全局变量,用于在两个函数直接传值
$.ajax({ url:'<%=request.getContextPath()%>/house/findLastPropertyPay.do',type : 'post',data : 'houseId=' + value,async : false,dataType : 'json',success : function(data) {//清空二级分类下拉框$("#startTime").val(data.startTime);startTimeValue=data.startTime;},error : function() {alert("error");}});
同时在controller里添加一个变量传递过来
mv.addObject("from", "addByHouseId");
//如果来自房屋管理页面,若没有缴费记录,则可以点击出日期选择框;否则没有。//如果来自物业缴费页面,若没有缴费记录,则可以点击出日期选择框;否则没有。注意两个判断为空的方式,一个是空字符串,一个是nullfunction showWdatePicker(){var from="${from}";var pdTime="${pd.startTime}";if( from==""&& startTimeValue==null){//不知道为啥,即使在开始定义startTimeValue时定义为空字符串,如果在物业缴费页面没有时间值,startTimeValue会变成nullWdatePicker({isShowClear:false,readOnly:true,dateFmt:'yyyy-MM-dd'});}if(from=="addByHouseId" && pdTime==""){WdatePicker({isShowClear:false,readOnly:true,dateFmt:'yyyy-MM-dd'});}}
最开始错误最低级,是把别人的代码搬过来,却没注意到别人的是select标签,而我这个是input标签。误用成下拉框的,导致一直没出来结果。
var obj = document.getElementById("BUILDING5_IDs"); //定位idvar index = obj.selectedIndex; // 选中索引var value = obj.options[index].value;var text = obj.options[index].text;if (text=="请选择") {$("#startTime").val("");return false;}
}
3、不知道为什么总是执行另一个方法,断点也没效果,而且后面代码跟没执行一样,但是控制台又显示出执行结果。
原因:因为之前为了提速,优化eclipse,将eclipse的自动编译取消了,导致eclipse一直没有编译新的代码,而是执行另一个方法,即使我把那个方法注释掉了。
唉,耽误我两天时间,也不知道优化是好还是不好。
- 项目疑难杂症
- 项目中的部分疑难杂症
- 疑难杂症
- 疑难杂症
- 疑难杂症
- 疑难杂症
- 疑难杂症
- 疑难杂症!!!
- 疑难杂症
- 疑难杂症
- 疑难杂症
- 疑难杂症
- 疑难杂症
- 疑难杂症
- 疑难杂症
- 疑难杂症
- Android项目中疑难杂症(千问)
- 疑难杂症分析
- pagination分页插件1.2.7版本遇到的问题
- 最少拦截系统(hdu-1257)(最长上升子序列)
- HSV 物品检测(我检测是自己的眼药水)
- 瀑布流插件编写
- C++随笔
- 项目疑难杂症
- 快速幂&费马小定理
- C语言学习循环结构
- Hive安装过程遇到的问题(启动hive --service metastore &)
- 如何判断安装的python是64位还是32位?
- Map集合小记
- 出现 java.net.MalformedURLException: no protocol 异常的原因及解决方法
- c语言基础
- 1758: [Wc2010]重建计划