关于使用SSM+JSP开发时setter、getter隐式调用问题的小结
【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://www.cnblogs.com/cnb-yuchen/p/17977495
出自【进步*于辰的博客】
之前使用SSM+JSP做网站开发,由于没有注意setter、getter的隐式调用问题,出现了多次bug,对开发进度影响挺大。因此,特来作这篇文章跟大家分享,帮在使用SSM开发的博友们避避坑。
参考笔记三,P31.1。
1、setter
隐式调用时机:
1、查询数据,调用无参构造方法创建实例后
2、getter
隐式调用时机:
1、EL表达式
2、使用@ResponseBody时
3、<if>、<when>等标签
4、ajax得到的响应体是实体,获取属性时
5、sql语句内的 #{xx}、${xx}
对第5点说明:
#{xx}/${xx}都隐式调用了getter,而不是根据属性名调用。- 当
xx对应的类型是 Date,即获取的是时间时,一般为了EL表达式显示,会重写getter,并将返回值类型改为 String;(当然这已经不是重写) - 如果这样“重写”了getter,必须判断是否为
null。原因不是为了EL表达式显示,因为当为null时,EL表达式不会报错;而是因为返回的时间字符串必然是通过 SimpleDateFormat 等类由时间转换而来,转换时,若时间为null,抛出异常。
大家看完上述说明,一定有一个疑惑:“你重写了 Date 类型属性的getter,例如插入时,#{xx}获取时间,得到的不就是 String,而数据库字段类型是时间类型,怎么能插入成功?”
这是因为Mybatis和MySQL / Oracle都有将Date与String自动转换的功能。
示例说明:
实体。
User(userId, userName, cancelStatus)
属性cancelStatus:注销状态,0-正常,1-注销中。
一般使用这两种方法将数字转换成文字:
getter内转换;- 渲染时转换,如:
ajax。
一般选择第2种方法,因为如cancelStatus这类已约定取值的属性,往往会用于判断,如:EL表达式中判断取值来显示不同内容。
由于第1种方法会修改getter,则可能报错;当然,可定义其他名称的getXx()返回文字信息,但那样成本高。
因此,大多数情况下都是在渲染时将数字转换成文字。这也是很多项目前端采用的方法。
本文完结。
关于使用SSM+JSP开发时setter、getter隐式调用问题的小结的更多相关文章
- 使用lombok时@Setter @Getter无效
原文链接 : https://blog.csdn.net/marion158/article/details/87893480 lombok是一个帮助简化代码的工具,通过注解的形式例如@Setter ...
- iPhone开发教程之retain/copy/assign/setter/getter
assign: 简单赋值,不更改索引计数 copy: 建立一个索引计数为1的对象,然后释放旧对象retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 1. 接触过C,那么 ...
- J2EE开发时的包命名规则
http://www.blogjava.net/paulwong/archive/2012/04/15/374675.html 转一个J2EE开发时的包命名规则,养成良好的开发习惯 代码编写规范目的: ...
- JavaBean+Servlet 开发时,JavaBean 编写问题
在开发 JavaBean 时,遇见一个问题: ***** 表单字段为空,提交时出现 nullPointerException 异常: 表单字段不为空,提交正常. 使用 JavaBean ,JSP页 ...
- JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门
2 JSP内置标签(美化+业务逻辑) 1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容 2)JSP内 ...
- 说声PHP的setter&getter(魔术)方法,你们辛苦了
php作为快速迭代项目的语言,其牛逼性质自不必多说.今天咱们要来说说php语言几个魔术方法,当然了,主要以setter&getter方法为主. 首先,咱们得知道什么叫魔术方法? 官方定义为:_ ...
- 周末,说声php的setter&getter(魔术)方法,你们辛苦了
php 作为快速迭代项目的语言,其牛逼性质自不必多说.今天咱们要来说说php语言几个魔术方法,当然了,本文主要以setter&getter方法说明为主. 首先,咱们得知道什么叫魔术方法? 官方 ...
- 学习es6 setter/getter研究
1.背景 在ES6中,我们对类的定义如下 class Person { // 构造函数 constructor (name) { // 属性初始化 this.name = name; } // 成员方 ...
- IntelliJ IDEA安装及jsp开发环境搭建
一.前言 现在.net国内市场不怎么好,公司整个.net组技术转型,就个人来说还是更喜欢.net,毕竟不是什么公司都像微软一样财大气粗开发出VS这样的宇宙级IDE供开发者使用,双击sln即可打开项目, ...
- jQuery 3.0 的 setter/getter 模式
jQuery 的 setter/getter 共用一个函数,通过是否传参来表明它是何种意义.简单说传参它是 setter,不传它是 getter. 一个函数具有多种意义在编程语言中并不罕见,比如函数重 ...
随机推荐
- 普及模拟2 +【LGR-155-Div.3】洛谷基础赛 #3 &「NnOI」Round 2
普及模拟2 \(T1\) 地址 \(0pts\) 简化题意:判断一个 \(IP\) 地址是否合法(数据保证字符串中存在且仅存在4个被字符分开的整数),若不合法则将其改正. 部分分: \(0pts\) ...
- NC51111 Atlantis
题目链接 题目 题目描述 There are several ancient Greek texts that contain descriptions of the fabled island At ...
- STM32的串口通信UART/TTL
常用的串口pin STM32的串口是基础通信方式, 每个型号都带多组串口, 一般都使用默认的组, 可以参考芯片的datasheet, 去看pinout and pin definitions, stm ...
- 大白菜方式制作win10 PE启动U盘
说明 最近帮朋友安装下win10,用了2种制作U盘启动盘的方式.记录一下也方便大家少走弯路. 准备的工具: 1.大白菜软件 2.win10镜像 3.1个U盘,U盘容量 > 8G即可. 制作PE启 ...
- 解决主机ssh虚拟机linux慢的问题
1.编辑sshd配置文件: vi /etc/ssh/sshd_config 找到行:#UseDNS yes 将注释去掉,把yes改为no 2.重启sshd服务: service sshd restar ...
- Redis原理再学习02:数据结构-动态字符串sds
Redis原理再学习:动态字符串sds 字符 字符就是英文里的一个一个英文字母,比如:a.中文里的单个汉字,比如:好. 字符串就是多个字母或多个汉字组成,比如字符串:redis,中文字符串:你好吗. ...
- error接口
// 实际上它是interface类型,这个类型有一个返回错误信息的单一方法: type error interface{ Error() string } 创建一个error最简单的方法就是调用er ...
- 【LeetCode二叉树#10】从中序与后序(或者前序)遍历序列构造二叉树(首次构造二叉树)
从中序与后序遍历序列构造二叉树 力扣题目链接(opens new window) 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorde ...
- java GUI 快速入门
java 中编写 GUI 有两中工具包,分别为 AWT.Swing. Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和方法. AWT 和 Swing 都能跨平台使用:AWT 会 ...
- kotlin协程小记
转载请标明出处:https://www.cnblogs.com/tangZH/p/16849169.html -[kotlin协程小记]-[协程的async使用]- [kotlin协程异常处理之-tr ...