我有一个带有空字符串的操作,用于在根命名空间中定义的名称,如果找到某个结果,我想从另一个操作重定向到该操作,但它似乎不起作用。
这是默认操作
<action name="" class="com.example.actions.HomeAction">
<result name="success" type="freemarker">freemarker/home.ftl</result>
</action>
我正在定义包的全局结果中的重定向:
<global-results>
<result name="sendToRouting" type="redirectAction">
<param name="actionName"></param>
<param name="namespace">/</param>
</result>
</global-results>
我已经尝试取出actionName参数,但这不起作用。如果我为HomeAction命名并在全局结果中按名称引用它,那么我假设问题是缺少重定向的动作名称。
有什么想法吗?
答案 0 :(得分:11)
我认为你想要做的是使用<default-action-ref />
:
<package name="home" namespace="/" extends="struts-default">
<default-action-ref name="home" />
<action name="home" class="com.example.actions.HomeAction">
<result name="success" type="freemarker">freemarker/home.ftl</result>
</action>
</package>
抱歉......误读了这个问题:
尝试将type="redirectAction"
更改为type="redirect"
,我相当确定redirectAction现在是重定向。
答案 1 :(得分:3)
您是否收到NullPointerException,因为actionName参数为空?我通过提供评估到空字符串的字符串来解决这个问题:
<param name="actionName">${}</param>
仍在寻找更“正确”的解决方案......