今天做项目时候遇到个JavaBean的set()、get()方法取值取不到问题!!!!
###1.今后注意JavaBean或Model的命名尽量不要使用如下形式:
即:1)首字母别一个小写开头,2)结尾尽量不要加s复数
private String privNum;//正确
private String bPrivNum;//错误
private Double[] selectMoney;//正确
private Double[] selectMoneys;//错误
报如下错误:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page
/jsp/phone/login/frame/frameLeft.jsp at line 97
94:
95:
96: <c:forEach items="${firstList1}" var="firstMenu">
97: ${firstMenu.bPrivName}
98: </c:forEach>
99: <c:forEach items="${secondList1}" var="secondMenu">
100: ${secondMenu.bPrivName}
root cause
javax.el.PropertyNotFoundException: Property 'bPrivName' not found on type
com.hanpeng.base.phone.model.TBussinessPriv
javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)
javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170)
javax.el.BeanELResolver.property(BeanELResolver.java:279)
javax.el.BeanELResolver.getValue(BeanELResolver.java:60)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
###大概意思为:el表达式没法通过getXXX()找打TbussinessPriv中的bPrivName属性
一、总结
总结如下:EL表达式调用BeanUtils.getProperty(bean, name);来获得对象属性,分析源码这个类默认将你javaBean
的属性,首字母大写并且前面加上set、get,例如privNum-->setPrivNum、getPrivNum。
但是如果你属性为bPrivNum-->setBPrivNum、getBPrivNum,你通过EL表达式${test.bPrivNum}就会报错!!!
二、如何避免
1.JavaBean命名时避免出现bPrivNum这样的名字,1)可以为privNum。2)可以为BPrivNum。
public class TBussinessPriv extends BaseModel{
private String privNum;
//private String BPrivNum; 也正确
//private String bPrivNum; 错误
public String getPrivNum() {
return privNum;
}
public void setPrivNum(String privNum) {
this.privNum = privNum;
}
}
2.非要使用bPrivNum命名,EL表达式得值时,人为改为BPrivNum,不能更JavaBean中的bPrivNum一样
public class TBussinessPriv extends BaseModel{
private String bPrivNum;
public String getbPrivNum() {
return bPrivNum;
}
public void setbPrivNum(String bPrivNum) {
this.bPrivNum = bPrivNum;
}
}
<c:if test="${firstList!=null}">
<c:forEach items="${firstList}" var="firstMenu">
<h1 id="m${firstMenu.BPrivNum}"
onClick="SwitchMenu('sub${firstMenu.BPrivNum}','m${firstMenu.BPrivNum}')" class="menu">
<ol class="left11">
${firstMenu.BPrivName}
</ol>
</h1>
<ul class="submenu" id="sub${firstMenu.BPrivNum}" >
<c:forEach items="${secondList}" var="secondMenu">
<c:if test="${firstMenu.BPrivNum==secondMenu.BMenuId1}">
<li><a href="${secondMenu.BPrivUrl}" target="main">
<span><img src="${secondMenu.BPicUrl}" width="26" height="27" align="middle"/></span>
${secondMenu.BPrivName}</a></li><br/>
</c:if>
</c:forEach>
</ul>
</c:forEach>
</c:if>
分享到:
相关推荐
JavaBean属性的命名规范是Java开发中不可忽视的一个细节。正确的命名不仅能够提升代码质量,还能有效避免潜在的问题,从而提高项目的整体性能和可维护性。因此,在实际开发中,开发者应当重视并遵循这些规范,确保...
JavaBean 是一种特殊的 Java 类,它遵循特定的命名规范,以便于其他 Java 类可以正确地访问和操作它的属性。下面我们将详细介绍 JavaBean 属性命名规范问题。 一、JavaBean 属性命名规范 JavaBean 的属性命名规范...
- 类名和接口名由一个或多个单词组成,每个单词的首字母大写,如`StringBuffer`, `IndexOptimizer`, `WebDbReader`。 - 接口名称可以使用形容词词缀,如`Runnable`, `Comparable`。 - 类名通常使用名词或名词短语...
JavaBean 是Java编程中的一种惯用模式,它并不是一种严格的语法规范,而是一种设计标准,目的是提高代码的可重用性和可读性。JavaBean 主要用于构建Java应用程序中的组件,尤其是在用户界面和数据绑定中。它的一些...
* 参照 java 驼峰命名法,首字母以小写开头,每个单词首字母大写(第一个单词除外)。 例如,一个变量名可以为 myFirstName。 四、 Dao 层命名规范 Dao 层是 Java 项目中负责数据库访问的层次。Dao 层的命名规则...
Java Bean属性命名规范问题分析
在Java编程中,将JSON字符串转换为JavaBean实例是一个常见的任务,特别是在处理Web服务或API交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,而JavaBean是Java中的一种对象模型,用于封装...
4. **错误的JavaBean命名规范**:JavaBean应遵循Java的命名规范,即属性名称首字母小写,对应的getter和setter方法首字母大写。 5. **线程安全问题**:如果JavaBean在session或application作用域中,而它不是线程...
JavaBean开发规范可以确保JavaBean的可重用性、可维护性和可扩展性。 2. JSP与JavaBean之间的数据传输 JavaBean开发用户注册页面需要使用JSP与JavaBean之间的数据传输,通过JSP页面将用户输入的数据传递给JavaBean...
类名通常以大写字母开头,多单词时每个单词的首字母都大写,如`StudentInfo`。接口名则以大写字母"I"开头,如`IStudentInfo`。对于接口的实现类,需要去掉接口名称首字母"I"并加上"Impl"作为后缀,如`...
JavaBean是一种特殊的Java类,它遵循特定的规范,主要用于封装数据和业务逻辑,方便在Java应用程序或Web应用中重用。在JavaBean中,通常有公有的属性(getter和setter方法)来存储和访问数据,以及可能包含一些业务...
JavaBean是一种特殊的Java类,它是Java编程语言中的一个核心概念,尤其在开发企业级应用程序时极为常见。JavaBean遵循特定的规范,使它们能够被其他Java应用或开发工具(如IDEs)识别、可视化和操作。JavaBean的主要...
- JavaBean需是公开的类,且有一个无参数的构造器,以便于在运行时实例化。 - 属性的命名遵循驼峰命名法,如`username`和`password`。 - 提供getter和setter方法来访问和修改属性值。 2. **JSP中使用JavaBean**...
JavaBean是Java编程语言中的一种特定类,遵循特定的规范,用于封装数据并提供属性访问。这个"JavaBean示例"旨在帮助初学者理解和使用JavaBean。JavaBean主要用于构建Java应用程序的可重用组件,特别是在JavaServer ...
Servlet是一种Java编程语言的接口,用于扩展服务器的功能,而JavaBean则是一种符合特定规范的Java类,通常用作组件,可以在多个环境中重用。 Servlet主要用在服务器端,它扩展了Web服务器的能力,允许我们处理HTTP...
JavaBean是Java编程语言中的一种特定类,它遵循一套特定的规范,主要用于封装数据和提供对象间的交互。在Java世界里,JavaBean被广泛应用于构建组件、MVC框架以及持久化层等领域。本节我们将深入探讨JavaBean的概念...
- **命名规范**:JavaBean的类名通常采用驼峰式命名,例如`UserBean`,以表明它是一个JavaBean。 - **公共无参构造器**:为了方便实例化,JavaBean应提供一个公共的无参数构造器。 - **属性**:JavaBean封装的...
在本项目中,我们主要探讨如何使用JSP(JavaServer Pages)、JavaBean和Servlet技术来构建一个简单的在线留言板系统。这个系统将允许用户提交留言,并将这些数据持久化存储,以便其他用户可以查看和交互。以下是对每...
4. 类名通常以大写字母开头,遵循驼峰命名法,反映出它封装的数据。 在这个实验中,JavaBean可能包含一个或两个字符串属性,分别用于存储第一个和第二个字符串。例如: ```java public class StringSearchBean { ...
JavaBean 是一种遵循特定编程规范的 Java 类,它主要用于封装数据和提供数据访问方法。JavaBean 不是 Java 语言中的语法规定,而是一种约定俗成的习惯。有时,JavaBean 类也被称作 POJO(Plain Old Java Object),...