属性成员是isXxx时对应的get方式是isXxx,前台jsp取不到这个属性值

本文介绍在使用Eclipse开发工具时,为boolean类型变量生成get方法可能导致的前端取值问题,并解释了问题产生的原因及解决方案。

最近在项目中无意设置的boolean变量值为isXxx,用eclipse生成相应的set和get方法,eclipse生成的的boolean类型的get方法为isXxx,前台导致取不到相应的值 

Java代码  收藏代码
  1.  public class XxxAction extends BaseAction{  
  2.    private boolean isNumber;  
  3.   
  4.    public boolean isNumber() {  
  5.    return isNumber;  
  6.    }  
  7.    public void setNumber(boolean isNumber) {  
  8.        this.isNumber = isNumber;  
  9.    }   
  10. }  

 

Java代码  收藏代码
  1. //前面的jsp代码已省略,jsp嵌套进js代码  
  2.      var isNumber = '${isNumber}';//取得后台传过来的值,取到的值都为''  
  3.  //或者是     
  4.     var isNumber = '<s:property value="isNumber"/>';//取到的值都为''  


   导致以上原因是因为在Action中定义boolean类型的属性值为isXxx,跟eclipse开发工具生成的get方法名字相同,而前台取值${isNumber}或是<s:property value="isNumber"/>都会调用相应的get方法去取值,这就造成调用时没法区分是调用的是isXxx()方法还是isXxx属性,或者两者都不是.

 

通过El表达式获取属性值的时候,属性不一定媱定义,只需要定义对应的get、set方法也可以

转载于:https://www.cnblogs.com/pjlhf/p/8707762.html

### Java Bean 中 `isXxx` 和 `getXxx` 方法的调用规则 在 Java Bean 的规范中,对于布尔类型属性,通常会提供两种形式的方法来获其值:`isXxx()` 和 `getXxx()`。框架在解析这些方法遵循一定的优先级规则。 #### 1. 属性命名约定与方法识别 Java Bean 规范定义了通过反射机制访问对象属性的标准方式。如果某个类中的字段是一个布尔类型(`boolean` 或 `Boolean`),那么它的 getter 方法可以命名为 `isXxx()` 或者 `getXxx()`[^1]。具体来说: - 如果存在 `isXxx()` 方法,则优先使用该方法作为布尔属性getter。 - 如果不存在 `isXxx()` 方法,则尝试查找 `getXxx()` 方法并将其视为替代方案。 这种设计是为了保持一致性以及简化开发者的工作流程。 #### 2. 框架处理逻辑 大多数现代框架(如 Spring、Hibernate 等)都严格遵守上述标准,在内部实现过程中按照如下顺序执行操作: - 首先检查是否存在名为 `isXxx` 的零参数公共成员函数;如果有则认为这是对应于某特定 boolean 类型字段的读器。 - 若未找到合适的 `isXxx` 函数,则继续寻找是否有匹配名称模式为 `getXxx` 的候选者可用作备选方案。 此过程体现了面向接口编程的思想——即使实际编码风格有所差异,只要符合既定契约即可正常工作[^3]。 以下是简单的代码示例展示这一行为: ```java public class ExampleBean { private boolean active; public boolean isActive() { return this.active; } public void setActive(boolean active){ this.active=active; } // Optional: If 'isActive' does not exist, framework may fallback to using this method. public Boolean getActive(){ return this.active ? Boolean.TRUE : Boolean.FALSE ; } } ``` 在此例子中,假设我们有一个叫做 `ExampleBean` 的类,其中包含了一个叫 `active` 的私有布尔变量及其关联的两个公开存子(`getter`)。“活跃状态”的当前值可以通过调用 `bean.isActive()` 来获得,而无需考虑另一个潜在可选项即 `bean.getActive()` 是否被选用。 ### 结论 综上所述,当同存在 `isXxx` 和 `getXxx` 形式的 getter 方法,基于 JavaBeans 规范的设计原则,绝大多数主流开发工具包都会倾向于选前者作为默认入口点来进行数据交互活动。然而值得注意的是,某些特殊场景下也可能依据具体情况作出调整,因此建议始终查阅所依赖库的相关文档说明以确认确切的行为表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值