javabean的一个概念性问题

slowdown123 2008-01-14 03:30:41
大家好,小弟初学java.今天学javabean时有个地方想不太明白:
例如,jsp页面中有句<jsp:setProperty name="myBean" property="age" value="12" />给MyBean中的age赋值。
MyBean中有属性(字段) private int age; 和setter: public void setAge(int age){...}
不知jsp中property="age"是如何找到MyBean中的setter的.难道仅仅是根据age然后在其之前加入set吗?
我做了个实验,把setter改成:
public void setAge(String age) { //参数改成String类型
try {
this.age = Integer.parseInt(age);
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
程序运行不到该setter,说明jsp中调用setter还要判断类型,也就是要根据整个方法签名?
但private int age;该属性是私有的,jsp是如何知道age的类型的?难道是通过反射?
请大家不吝赐教,谢谢
...全文
64 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
slowdown123 2008-01-14
  • 打赏
  • 举报
回复
谢谢楼上各位
老紫竹 2008-01-14
  • 打赏
  • 举报
回复
Bean的规范就是属性加上对应的 set/get方法, boolean类型的也可以用 is方法取得。
所以,如果属性和对应的方法不匹配,比如你的例子,属性是int,方法是String,则此Bean将不是规范的Bean了

JAVA通过规范的命名规则,得到方法名,然后通过反射查看Bean是否有对应的方法,如果有则调用,否则就...


你可以在Eclipse 里面使用其自动 generate Get/Set 的功能看一下效果
changjiangzhibin 2008-01-14
  • 打赏
  • 举报
回复
这就是JavaBean的方便之处,当然LZ也可以不用它,
自己在 <% //code %>中写,也是可以的
cangyue87 2008-01-14
  • 打赏
  • 举报
回复
这似乎是Java的自省机制,它将页面参数的名称与JavaBean中属性的名称对应起来.
正如楼主猜测的,自省机制是通过自省者类java.util.Introspector实现的,这个机制是以Java反射机制和命名规范为基础的.

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧