Struts 2 json插件和通配符问题?

时间:2013-12-09 11:23:46

标签: java json struts2 struts2-json-plugin

在我的struts.xml中遵循约定来调用特定动作类的动作,如下所示:

struts.xml:

<package name="cdot.oss.cmsat.gma.struts" extends="struts-default" namespace="/">
    <action name="*ConfigureTspThreshold"
                class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="{1}">
                <result name="display">pages/ConfigureTspThresholdInput.jsp</result>
    </action>
</package>

我通过通配符获取方法名称,ConfigureTspThresholdAction是类名。

我使用struts2-json-plugin将数据转换为JSON。现在,对于某些操作,我想使用struts2 json插件返回JSON数据。

所以我需要使用extends json-default和result-type json来执行这样的操作:

<action name="*ConfigureTspThreshold" class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="{1}">               
    <result type="json">
        <param name="excludeProperties">
            tspNameIdMap
        </param>
    </result>
</action>

<action name="*ConfigureTspThreshold" class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction"
            method="{1}">
    <result type="json">
        <param name="excludeProperties">
        thresholdParameters
        </param>
    </result>
</action>

具有相同结果类型json的不同exclude-properties。

如何在约定中使用这些JSON结果类型? 由于最后两个操作具有相同的结果类型json会发生冲突?

2 个答案:

答案 0 :(得分:1)

我要做的是在您的操作类myexcludedProperties

中创建一个属性

然后在您的操作方法中,设置此myexcludedProperties

然后将您的操作映射更改为

<action name="*ConfigureTspThreshold" class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction"
            method="{1}">
            <result type="json">
                <param name="excludeProperties">
                    ${myexcludedProperties}
                </param>
            </result>
</action>

我相信${myexcludedProperties}是正确的语法。

如果您不想对属性进行编码,则必须弄清楚如何区分请求(method="{1}"),以便设置正确的参数。

希望这是有道理的。

答案 1 :(得分:0)

其中一个选项是在结果配置中使用动态参数。您始终可以在执行结果之前修改操作中的结果。看看this回答。