如何在String []类型上检查pageproperty?

时间:2014-01-14 12:20:28

标签: java cq5 crx

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

            

现在我创建了新页面,并用三个值(string1,string2,string3)填充了这个属性。 crx jcr中的这个属性:内容看起来像这样:

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

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

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

结果返回“false”。

如果myProperty是String数组,如何检查?

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

2 个答案:

答案 0 :(得分:2)

您可以尝试以下操作。如果属性是多值的,它将返回true,否则返回false。

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

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

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

答案 1 :(得分:1)

要检查obj是否为String数组类型,您可以执行此操作。

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

但你已经这样做了。

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

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