我负责开发子服务开发已经一个月了
现在功能基本都实现了 ,页面还有一些元素错位的问题 ,这个对我来说有一些难度。
我现在说说从一开始开发所遇到的问题:
一开始接手的时候,我没有看过该项目的前一个版本的代码,所以在开发了一个星期之后被告知要按照原先项目的规范来,然后是花了大力气来更改代码,对我这种菜鸟来说这是痛苦。
一:
该项目使用了springmvc开发。对于一些注解 例:@responbody @requestMapping
不是很了解,使用起来就非常不顺手,百度了一把,@requestMapping是对url请求的映射,
@ResponseBody 将内容或对象作为 HTTP 响应正文返回,并调用适合HttpMessageConverter的Adapter转换对象,写入输出流。
HttpMessageConverter接口,需要开启<mvc:annotation-driven />。
AnnotationMethodHandlerAdapter将会初始化7个转换器,可以通过调用AnnotationMethodHandlerAdapter的getMessageConverts()方法来获取转换器的一个集合 List<HttpMessageConverter>
- POST模式下,使用@RequestBody绑定请求对象,Spring会帮你进行协议转换,将Json、Xml协议转换成你需要的对象。
- @ResponseBody可以标注任何对象,由Srping完成对象——协议的转换
@requestMapping可以对Controller返回值,String或者ModelAndView处理
当control返回string类型时 @requestMapping 回对该返回值进行地址拼接,然后将改地址指向的页面返回前端。如果返回ModelAndView(由spring提供,org.springframework.web.servlet.ModelAndView)使用该类可以通过addObject方法向里边存储对象,通过setViewName方法存放转发地址。(通过资源重定向方式转发,因此使用时要注意,如果页面上保留的地址,是进行数据插入等操作的,页面属刷新时 数据就会再次插入,初次使用的时候本人就出现了这样的问题)
二:
在进行页面开发的时候出现了更改iframe src时页面不切换问题 使用location.href=''也不起作用
之后没法使用了iframe来切换页面,之后反复试验发现另一种解决方式:以前切换iframe 的src时是在iframe的子页面中操作的 通过window.parent.$("#iframeid").attr("src","")来切换的,无反应,查看网络之后发现,新的页面请求已经发出,然后被原先的页面请求给截断了,(至于为什么会被截断 目前不是很了解),所以 调用父页面的反复来更改iframe src window,parent.changeiframe();
然后在页面中写changeiframe方法
changeiframe(){
$("#iframeid").attr("src","url");
}
这样操作页面成功切换
三:在写页面的同时发现iframe的滚动滑轮的出现特别影响美观,于是百度了一把iframe高度自适应问题.
function iFrameHeight(){
var ifm= document.getElementById("smsComptBody");
var subWeb = document.frames ? document.frames["smsComptBody"].document : ifm.contentDocument;
if(ifm != null && subWeb != null) {
$("#smsComptBody").height(subWeb.body.scrollHeight);
//ifm.height = subWeb.body.scrollHeight;
}
}
该代码就解决了iframe高度自适应,但也有遗留问题,如:当你使用返回键返回上一个界面,如果上一个界面的高度比该界面高度小,则subWeb.body.scrollHeigh的取值就会有问题,界面的高度,而不是上一个页面,而且同时页面切换时,新的界面高度不如改界面事,iframe高度通同样不会刷新,而且对于界面所处的位置也不会改变,这些都导致界面不是很友好。;
function iFrameHeight(){
var ifm= document.getElementById("smsComptBody");
var subWeb = document.frames ? document.frames["smsComptBody"].document : ifm.contentDocument;
if(ifm != null && subWeb != null) {
$("#smsComptBody").height(0);//清除上一个页面高度影响
$("#smsComptBody").height(subWeb.body.scrollHeight);
//ifm.height = subWeb.body.scrollHeight;
scroll(0,0);//界面回到最顶部
}
}
这些问题都是 使用 form提交切换页面所引起的,
使用window,parent.changeiframe();方法是否存在同样问题,目前还没有试验过,若出现,可使用以上方式处理。
三:
代码修改问题
在功能实现的时候,难免出现考虑不全面,导致要修改方法的情况;
这种情况下,最好不在原来的代码上修改。因为在代码多的情况下,不会非常确定方法是否在其他地方上被调用,一旦修改,就会破坏其他方法的逻辑,导致其他方法出现问题,这种时候,可以重新再写个方法。来实现该功能.
四:
在service层的方法处理时,最好在一个处理写成一个方法,这样在control层中可以根据不同功能来确定引用不同的service方法组合 这样可以增加代码的重用性,减少代码的重复性。