2011-09-21 31 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\..*$