java文件

company.java

private int sTime;

public void setSTime (int sTime) {
        this.sTime = sTime;
    }
    
    public int getSTime() {
        return sTime;
    }

jsp文件

list.jsp

${company.sTime}

报错

Property 'sTime' not found on type com.entity.Company

1、背景

本文讲的普通JavaBean只是一个拥有Property(域/类变量)及其setter/getter的普通Java类。 
有一定Java开发经验的人可能会知道,普通JavaBean的Property(域/类变量)的命名不能采用以下形式:aA***或者Aa***,如:"aDdress"或"Address",否则,在web应用中会报无法找到这个Property(因为根据"规则",需要找的是"ADdress"或"address")。但对于其中的原因,一般人都不明白,难道这是Sun公司当初定的规范吗? 
Java开源以后,我们终于可以解开其中的谜:

2、普通JavaBean处理涉及到相关类 
在web应用中,Servlet容器或者EJB容器一般会使用java.beans包中的类来加载这些JavaBean。 
BeanInfo(接口) 
   | 
SimpleInfo(类) 
   | 
GenericBeanInfo(类) 
GenericBeanInfo是JavaBean数据装载类。 
Introspector是JavaBean处理中最重要的一个处理类。 
另外的一些辅助类,就不一一列举了。

3、解密 
3.1 开始 
在应用中,我们通常会用以下代码来获取一个普通JavaBean相关的信息: 
BeanInfo mBeanInfo = null; 
try { 
mBeanInfo = Introspector.getBeanInfo(Person.class); 
} catch (IntrospectionException e) { 
e.printStackTrace(); 

3.2 深入 
在Introspector类的getBeanInfo方法中,我们发现其中与Property处理相关的行: 
private GenericBeanInfo getBeanInfo() 
        throws IntrospectionException { 
        …… 
        PropertyDescriptor apropertydescriptor[] = getTargetPropertyInfo(); 
        …… 
    } 
3.3 继续深入 
在Property处理方法中,我们发现其处理方式是根据getter/setter的方法来得到Property(域/类变量) 
private PropertyDescriptor[] getTargetPropertyInfo() throws IntrospectionException{ 
   …… 
if(s.startsWith("get")) obj = new PropertyDescriptor(decapitalize(s.substring(3)), method, null); 
…… 

3.4 关键 
接下来,最关键的就是下面这个方法: 
public static String decapitalize(String s) 
    { 
        if(s == null || s.length() == 0) 
            //空处理 
            return s; 
        if(s.length() > 1 && Character.isUpperCase(s.charAt(1)) && Character.isUpperCase(s.charAt(0))){ 
            //长度大于1,并且前两个字符大写时,返回原字符串 
            return s; 
        } else{ 
            //其他情况下,把原字符串的首个字符小写处理后返回 
            char ac[] = s.toCharArray(); 
            ac[0] = Character.toLowerCase(ac[0]); 
            return new String(ac); 
        }

}

java中属性命名get字母大小写问题的更多相关文章

  1. Java中的命名规范到底是怎样的

    内容摘要:命名规范二,java中的方法名,对象名和字段名的第一个单词的首写字母应该小写,而后面的每个单词的首字母都应该小写 要想将java基础学的十分的牢固就必须将java中的命名规范掌握好了.俗话说 ...

  2. java中变量命名和引用变量的一个坑

    这次有两个主题,第一个太简单啦,就是java中变量的命名规则,纯记忆性东西.第二个主题,就是讨论一下对象引用变量的一个注意点.

  3. java中pojo对象首字母大写导致无法赋值问题

    命名规范(文末附有java命名规范)中指出,属性变量命名应采用驼峰命名的方式,即首字母小写,其他单词首字母大写: 但有时候我们对接三方的接口时,想要封装实体类来接受,但是发现接收到的参数的变量首字母是 ...

  4. MySQL中查询时对字母大小写的区分

    我相信很多人在mysql中查询时都遇到过mysql不区分字母大小写的情况:如以下例子: 1.SELECT * FROM `user` WHERE userpass = 'Z20'; 结果为: 2.SE ...

  5. 浅谈Java中的命名规范

    现代软件架构的复杂性需要协同开发完成,如何高效地协同呢? 答案是:制定一整套统一的规范. 无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全,试想如果没 ...

  6. java中的命名规则

    转载自:http://growstep.diandian.com/post/2011-08-17/3989094 1.类名首字母应该大写.属性(成员变量).方法.对象变量以及所有标识符(如形式参数.实 ...

  7. java中包命名常见规则

    做java的都知道java的包.类.接口.枚举.方法.常量.变量等等模型都有一套约定的命名规则! 学习每一种语言都应该学习对应语法和命名规则,以保持一个良好的编码风格.一来显示自己的专业.二来方便阅读 ...

  8. ava包(package)的命名规范,java中package命名规则

    Java的包名都有小写单词组成,类名首字母大写:包的路径符合所开发的 系统模块的 定义,比如生产对生产,物资对物资,基础类对基础类.以便看了包名就明白是哪个模块,从而直接到对应包里找相应的实现. 由于 ...

  9. java中属性,set get 以及如何学习类的一些用法

    1,先来看一个例子 package com.tdq.java; public class Run { public static void main(String[]args){ Student st ...

随机推荐

  1. 极简版OKEX比特币跨期对冲策略

    策略特点 只做正套,反套可以修改下,合约调换一下,即是反套. 添加两个 交易所对象,第一个季度,第二个当周. 精简了所有能简化的代码,优化空间还很大,教学策略谨慎实盘,跨期有一定风险. 欢迎反馈BUG ...

  2. 【POJ - 1321】棋盘问题 (dfs)

    棋盘问题 Descriptions: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘 ...

  3. SS上网配置(Window 7/8/10 )详解

    SS很多人都会用到,尤其是做外贸的朋友,今天我们来说下SS相关的配置. 首先从官网下载解压后的目录如结构下: ​ 点击***.exe,选择以管理员身份运行,切记打开后界面如下 ​​ 服务器地址为一段I ...

  4. spring/spring boot/spring cloud书籍推荐

    最近看了一些spring书籍,主要都是工作需要,实话说,没有必要买这么多书,每个主题一本就足够了,其他的补充可以通过项目实战和上网看官网或者博客补充. 说是推荐,其实只是一些简单读后感想而已,每本书都 ...

  5. Servlet,jsp,jsp的9大内置对象

    以servlet作为控制器 1:servlet的生命周期:以下方法都是servlet容器进行调用 1)构造函数:只被调用一次,当项目启动时或者该servlet被容器第一次调用时,会创建servlet实 ...

  6. 【react-native】持续踩坑总结

    陆陆续续的已经接触了RN快3个月,整体的感受...感觉在调试兼容andorid问题的时候就像回到了IE时代. 本来想按自己踩坑的路径持续更新一些记录,但是,现实是坑太多,还是统一写一篇汇总一下吧(鉴于 ...

  7. poj 2349 Arctic Network(最小生成树的第k大边证明)

    题目链接: http://poj.org/problem?id=2349 题目大意: 有n个警戒部队,现在要把这n个警戒部队编入一个通信网络, 有两种方式链接警戒部队:1,用卫星信道可以链接无穷远的部 ...

  8. SIFT特征点检测与匹配

    SIFT的步骤如下: (1) 尺度空间极值检测(Scale-space Extrema Detection) 也就是在多尺度高斯差分(Difference of Gauss)空间中检测极值点(3x3x ...

  9. 加密解密(3)Bob到CA申请证书过程

    网络安全中最知名的人物大概就是Bob和Alice了,因为很多安全原理阐述中都用这两个虚拟人物来进行实例说明. 我们来看看Bob是怎么从CA中心获得一个数字证书的: 1.Bob首先创建他自己的密钥对(k ...

  10. 16-1 WEB存储基本操作

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...