动态s:表单动作

时间:2013-10-04 17:23:02

标签: jsp dynamic struts2 action ognl

有没有办法在Struts2的action标记中指定动态s:form属性?我想要类似下面的东西。

<c:set var="formAction" value="baseAction" />
<c:if test="${someCondition}">
     <c:set var="formAction" value="childAction" />Ac

<s:form method="post" action="${formAction}">
    <s:input....../>
    <s:select...../>
</s:form>

我知道这可以使用javascript实现,但我想避免重构。 我尝试使用scriplets实现这一点,但问题是Struts2标签没有采用运行时属性。我甚至尝试使用OGNL,但它也没有帮助。

2 个答案:

答案 0 :(得分:7)

使用Struts2标签设置值并检查条件,然后使用OGNL放置action属性。

<s:set var="formAction" value="'baseAction'" />
<s:if test="some_condition">
  <s:set var="formAction" value="'childAction'" />
</s:if>

<s:form method="post" action="%{#formAction}">
  <s:input....../>
  <s:select...../>
</s:form>

答案 1 :(得分:2)

使用s:url标记动态构建动作网址

<s:url action="%{somePoperty}" var="myUrl"/>
<s:form action="%{#myUrl}"> 

实际上,Struts标签的属性不仅不接受scriptlet,还接受JSTL EL表达式。