我已经在Struts 2 modelbean中声明了一个布尔变量为isABooleanValue
,我可以通过使用这个modelbean来查看该值。jsp中的aBooleanValue
。
盖特看起来像这样
public boolean isABooleanValue(){
return isABooleanValue;
}
塞特看起来像这样
public void setABooleanValue(boolean isABooleanValue){
this.isABooleanValue=isABooleanValue;
}
Jsp代码
<代码>
有人能解释一个不正确的变量名是如何从值堆栈中这样被访问的吗?
编辑
解决方案
在JSP中使用属性基于指定的Getter方法<代码>模型bean。aBooleanValue调用在模型Bean中定义的isbooleanValue()
方法,因此不依赖于私有字段名。
类似问题
更新:-虽然这似乎在较旧版本的OGNL中有效,但在OGNL版本3.0中有效。11(OgnlRuntime)与Struts2捆绑在一起,当字段名的getter和setter不相同时,可能会导致显示空白值。
如前所述,Aleksandr M变量名有一个private
修饰符。它对Struts OGNL隐藏变量。当OGNL计算表达式时,它总是寻找可用于该名称的对象访问器。其中,它使用一个更适合的方法来获取被评估的键的值。
如果一个变量名有一个public
访问器,它将使用该变量的名称。如果它是一个方法访问器,那么它会根据methd名称计算一个名称。
例如,如果您有一个方法
public boolean isABooleanValue(){
return isABooleanValue;
}
OGNL可以访问具有aBooleanValue
和ABooleanValue
的名称。它返回什么并不重要,但它应该是一个布尔值。
不建议将这些方法映射到操作,因为您可能会通过OGNL调用或在序列化过程中遇到不必要的操作调用。
我想完成但不明白它是如何工作的 使用这段代码,我想注释生成它们各自的setter和getter,这样我就可以使用像 编辑2013-10-25 我的目标是构建一个能够做到这一点的库,因为我太好奇了,想了解如何在内部工作,所以我将能够用这个特性来支持我的框架,因为jet只是一个小实用程序,但在未来我希望它能为我节省大量的工作,你可以在github WSD Android上看到
问题内容: 我继承了在getter / setter上具有@JsonProperty批注的某些位代码。目的是当使用Jackson库序列化对象时,字段具有该特定名称。 当前代码: 现在,对于另一个工具,我还需要使用JsonProperty对该字段进行注释。因此,这将是我更改的代码: 是否有人在字段和获取器/设置器上都使用了相同的注释?我在网上四处张望,却什么也没看见。 我已经编译并运行了代码,但是我
问题内容: 我继承了在getter / setter上具有@JsonProperty批注的某些位代码。目的是当使用Jackson库序列化对象时,字段具有该特定名称。 当前代码: 现在,对于另一个工具,我还需要使用JsonProperty对该字段进行注释。因此,这将是我更改的代码: 是否有人在字段和获取器/设置器上都使用了相同的注释?我在网上四处张望,却什么也没看见。 我已经编译并运行了代码,但是我
问题内容: 始终建议使用getter / setter访问私有变量。为什么最好将它们声明为public并对其进行访问。无论如何,我们正在使用getter和setter访问它? 问题答案: @mre的回答非常好,您的问题很重要。总结一下:您将对象的字段设置为私有,以控制其他对象使用它的方式。您的对象使用setter来: 限制和验证传递给设置器的数据 隐藏其内部数据结构(服务对其他对象感兴趣,而不是服
问题内容: 我有一个表,其中包含类似单词的列表: 所以我想如果有人写像 “ hela iam正在为gogle寻找类似引擎”。 现在,我想检查数据库中是否存在每个单词,如果不存在,应该使我得到与该单词相似的单词。例如:。好吧,我想修复拼写错误。在我的数据库中,我有所有英语单词的完整词典。我找不到任何对我有帮助的mysql函数。对我的情况没有帮助。 问题答案: 有一个功能确实可以满足您的要求,但是它很
我继承了在getter/setter上有@JSONProperty注释的特定位代码。这样做的目的是,当使用Jackson库序列化对象时,字段具有特定的名称。 当前代码: 我已经编译并运行了代码,但我不确定这是否会导致任何问题。对此有什么想法吗?