2011-09-21 72 views
5

我正在使用Struts 2和json插件,struts.xml文件中的屬性映射通常令人沮喪,但我能夠弄清楚它們。如何在Struts 2中指定地圖屬性JSON插件

我碰到過一個案例,我無法設置includeProperties來給我我期望的結果。

我經常使用的配置式

^itemList\[\d+\]\.id, 
^itemList\[\d+\]\.name 
.... 

這種運作良好。

在這種情況下,我想從地圖不是列表(或地圖,這是一個列表成員的孩子)

如果使用*是整個地圖的正確打印出返回的數據,但我不希望來自地圖元素的所有數據。

^itemList\[\d+\]\map\.* 

整個地圖returnd

我嘗試了好幾種不同格式和他們都沒有產生結果。在地圖物業

沒有人有一個語法的運氣來限制地圖的內容

^itemList\[\d+\]\map\[\d+\]\.id 
^itemList\[\d+\]\map\[\d+\]\.name 

不返回任何結果?

感謝 斯科特

回答

0

1)你的正則表達式是可疑的。請注意,在表達式「^ itemList [\ d +] \ map [\ d +]。id」中,+ d是指多一個數字,所以地圖必須有數字,因爲它是關鍵。如果這不是你想要的,那麼'。+'可能更合適(一個或多個任何字符)。

2)將Map轉換爲LinkedHashMap,然後將其視爲列表。 (未經測試,可能無法正常工作)

+0

我在表達式中犯了一些錯誤,錯過了幾個'。'但你是正確的+ d正在尋找一個數字。 我嘗試了幾次其他表達式的迭代來表示Map的字符串鍵,沒有任何我嘗試過的。 在這一點上,我已經創建了一個輕量級對象,我將其填充以表示我的地圖中的數據,這是最實用的方法。它需要一個額外的類並將一些配置移到應用程序中的不同位置,但它爲我的目的創造了最佳結果。 – Scott

1

您不能將'd'它映射爲整數。 試試這個^itemList\..*$