编程小错误备忘录

Posted yangykaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程小错误备忘录相关的知识,希望对你有一定的参考价值。

(1)set/getAttribute 与 set/getParameter 的差别

原来一直没有细致区分过这两个方法。

遇到问题才去好好学习了一下。特此总结一下

通俗的概括一下。差别有两点:


一、request.getAttribute():是request时设置的变量的值,用request.setAttribute("name","您自己的值");来设置值;   


request.getParameter():提取发送过来的參数如:本网页http://community.csdn.net/Expert/topic/4633/4633804.xml?temp=.3488123  
request.getParameter("temp")==".3488123"
request.getParameter  是用来接受来自get方法或post方法的參数  


getParameter能够获得client传送给server端的參数值。

  
getAttribute能够得到由setAttribute设置的參数值。就相当于是使用getAttribute得到一个自定义的參数,而不是从client得到的參数。


二、getParameter仅仅能传递string类型的变量。getAttribute能传递vector。


(2)username:<input  type=text name=uname/><br/>这句话中,uname后面应该加个空格。或者边城这样“uname”。否则编译器会自己主动觉得后面的/>部分也是属性名。


(3)病理特征:Errors/BindingResult argument declared without preceding model attribute. Check your handler method signature


经过笔者研究读代码,发现BindingResult的对象必须与@ModelAttribute声明的对象绑定。这样的绑定是由Spring MVC来做。但若他们中间插入别的參数,则无法绑定了。所以Errors/BindingResul类型的參数必须在标注@ModelAttribute 类型的參数次一位置(挨着),见org.springframework.web.bind.annotation.support.HandlerMethodInvoker源码。


比如:public String editExchange(@ModelAttribute("exchangeSet") ExchangeSet exchange,  BindingResult result, Model model) 

以上是关于编程小错误备忘录的主要内容,如果未能解决你的问题,请参考以下文章

PHP设计模式 - 备忘录模式

23种设计模式(15):备忘录模式

JavaScript中易犯的小错误-------常见错误二:传统编程语言的生命周期误区

面向对象编程思想-备忘录模式

以编程方式(通过信用备忘录?)清理 Magento 中的 Paypal 逆转

BIOS备忘录之x86硬件编程(寄存器与IO)