0

我正在从变量构建 struts2 参数值,在一种情况下它可以工作,而在另一种情况下它不能。这是菜单项 click 的“结果”:

<result name="WidgetList"  type="redirectAction">            
    <param name="actionName">actList</param>
    <param name="object">Widget</param>
</result>

和动作映射:

<action name="actList" class="MyClass" method="execute">
    <interceptor-ref name="newStack" />
    <result name="success">
        <param name="location">jsp + ${object} + List.jsp</param>
    </result>
    <result name="Edit" type="redirectAction">            
        <param name="actionName">actEdit + ${object}</param>
    </result>
</action>

在“编辑”结果(用户单击列表中的小部件后返回)中,正确构建了 actionName,并且该操作运行以显示页面。

actEdit + ${object}

变成:

actEditWidget

但是,即使 ${object} 参数已正确替换,重定向到“actList”的菜单单击也不会正确构建。

jsp + ${object} + List.jsp

变成字符串:

"jsp+Widget+List.jsp"

我得到:

HTTP Status 404 - /MyApp/jsp+Widget+List.jsp

为什么这在一种情况下有效,而在另一种情况下无效……我该如何“解决”这个问题?

4

1 回答 1

0

戴夫是对的——只是把它压在一起确实有效,虽然它看起来真的很丑。

jsp${object}List.jsp

我仍然很想知道为什么会有差异,但出于某种原因,上面的“位置”参数尊重参数值中的每个字符。然而,“actionName”参数会去除内部空格并同时读取 + 和 || 作为连接。所以这有效:

a    ||    c    tEdi + t${object}   

对我来说毫无意义,但至少我可以做我想做的事。

谢谢戴夫!

于 2015-08-20T22:18:01.043 回答