【问题标题】:how to check pageproperty on type String[]?如何检查类型 String[] 的页面属性?
【发布时间】:2014-02-02 12:10:13
【问题描述】:

我在 dialog.xml 中有以下属性:

现在我创建了新页面并用三个值(string1、string2、string3)填充了这个属性。 crx jcr:content 中的这个属性如下所示:

Name       | Type     | Value
------------------------------
myProperty | String[] | string1, string2, string3

现在我想用 java 访问这个属性并检查它是否具有 String[] 类型。我这样做如下:

boolean result = myPage.getProperties().get("myProperty") instanceof String[];

结果返回“假”。

如何检查 myProperty 是否为字符串数组?

ps:String.valueOf(...).get("myProperty")) 返回[Ljava.lang.Object;@761139f3

【问题讨论】:

  • 为什么需要类型参数?简化您的设计 - 只需简单的 Name 、 Value Pairs,您就可以确定它是否具有多个键值并将其放入某个数组中。这将简化以后对属性文件的维护

标签: java aem crx


【解决方案1】:

您可以尝试以下方法。如果属性是多值的,则返回 true,否则返回 false。

Property myProp = myPage.getProperties().get("myProperty"); boolean result = myProp.isMultiple();

然后我们可以获取属性的值,然后检查它的类型。

if(result) { Value[] values = myProp.getValues(); for(Value value : values) { value.getString(); } }

【讨论】:

    【解决方案2】:

    要检查obj 是否为字符串数组类型,您可以这样做。

    System.out.println(obj instanceof String[]);
    

    但你已经这样做了。

    在您的情况下,类型显然不是String[],而是Object[]

    此外,您可以检查此Object[] 的第一个元素是否属于
    String 类型,但这并不意味着其他元素也属于String 类型。

    【讨论】:

      猜你喜欢
      • 2010-12-30
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      • 2017-07-27
      相关资源
      最近更新 更多