2013-05-19 47 views
1

我真的很陌生,所以我提前致歉。我有一個簡單的腳本,我無法工作。我想要做的就是獲取位於JCR中的特定資源的「lastModified」屬性。吊索 - 獲取資源屬性

Resource getResource = resourceResolver.getResource("/content/AboutPage/jcr:content/list"); 
ValueMap properties = resource.adaptTo(ValueMap.class); 
String lastModified = properties.get("jcr:lastModified", String.class); 

相反,我得到的是下面的錯誤:

Duplicate local variable properties 

任何幫助,不勝感激!謝謝!

+1

使用合適的IDE進行編碼。它會捕獲語法錯誤。 – Roland

回答

3

Java或JSP代碼中的「重複的局部變量」僅僅意味着在同一範圍內已經有一個名稱相同的變量。如果你自己沒有定義這個變量,你可能會包含一些其他的代碼。

正如你注意到的,你只需要改變變量的名稱來避免這個問題。

0

而不是

ValueMap properties = resource.adaptTo(ValueMap.class); 

地說:

ValueMap properties = getResource.adaptTo(ValueMap.class); 
+0

感謝您回覆@Asier,但我仍然收到如下錯誤。任何其他想法? –

+0

好吧,不知道如果這可能是一個問題,但我不會建議調用與函數名稱相同的變量(getResource)。 –

0

我才意識到我在做什麼錯。如果我將「屬性」更改爲「屬性」,它似乎工作。我想你不能將值映射適應「屬性」。

Resource getResource = resourceResolver.getResource("/content/AboutPage/jcr:content/list"); 
ValueMap property = resource.adaptTo(ValueMap.class); 
String lastModified = property.get("jcr:lastModified", String.class); 
0

CQ Taglibs. Check this link中定義了properties 這就是爲什麼你會得到重複的變量錯誤。

此外,如果您確實使用CQ tablib,則不需要創建自己的屬性。只需使用默認屬性即可。

屬性 性質當前資源(org.apache.sling.api.resource.ValueMap)的對象。

只是檢查您的JSP代碼中是否存在<cq:defineObjects />。 如果您已經定義了CQ對象,那麼只需使用默認屬性對象。