【问题标题】:JSF Access Property whos name starts with a number名称以数字开头的 JSF 访问属性
【发布时间】:2017-04-04 18:52:46
【问题描述】:

我知道这可能是一个愚蠢的问题,但我在这里不走运。 我在动态 Web 应用程序中使用 JSF2.0 (primefaces) 中的库

在我需要访问库中定义的GETTER FUNCTION名称以数字开头的对象的属性之前,我没有问题

如下

class LibraryObject
{
 private String PerfectlyNamedVariable;
 public String get32BitAddress(){ return this.PerfectlyNamedVariable; }
}

现在要在 JSF xhtml 中访问这个“PerfectlyNamedVariable”字符串属性(我不知道它的命名是什么,我只能看到公共 getter 函数),通常我会这样

假设 LibraryObject 的实例在 Bean 的列表中,而 JSF 正在使用

呈现表
<p:dataTable value="#{MyBean.LibraryObjectList}"  var="instance" >
   <p:column headerText="32 Bit Address">
     <h:outputText value="#{instance.32BitAddress}" />
   </p:column>
</p:dataTable>

如果 GETTER FUNCTION 以除数字以外的任何名称开头,这将没有问题,但在这种情况下,我会收到此错误

Failed to parse the expression [#{instance.32BitAddress}]

我实在是无法更改库的源代码来调整命名,显然我的研究能力不达标,今天我自己找到了。 那么如何访问名称以数字开头的属性?

非常感谢

【问题讨论】:

  • java 如何允许您创建以数字开头的变量名?这不可能。见docs.oracle.com/javase/tutorial/java/nutsandbolts/…。有效的 java 变量名只能以字母、下划线或美元开头
  • 我的错误,你的绝对正确。但那是在我看不到的库中,可能正如你所说,实际变量不是以数字开头。尽管如此,制作 getter 函数的天才将其称为 get32BitAddress(),现在它在 JSF 中作为 Instance.32BitAddress 访问,但它解析失败,这就是我卡住的地方
  • 刚刚编辑了这个问题,也许现在对你来说更有意义

标签: primefaces jsf-2


【解决方案1】:

您可以使用以下表达式来访问这些字段 -

<h:outputText value="${instance.get32BitAddress()}" />

使用这种方法,您只能获得价值。你不能设置。由于您在&lt;h:outputText&gt; 中使用此值,因此在提交表单时不会出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2011-03-15
    • 2021-11-03
    • 2021-12-06
    • 1970-01-01
    • 2018-06-25
    相关资源
    最近更新 更多