动态 s:form 行动

7
有没有一种方法可以在Struts2的标签中指定动态的action属性?我想要像下面这样的东西。
<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实现这一功能,但我想避免重构。我尝试使用脚本语言来实现,但问题是Struts2标签不支持运行时属性。我甚至尝试了OGNL,但也没有帮助。

2个回答

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>

2
使用 s:url 标签以动态方式构建操作 URL。
<s:url action="%{somePoperty}" var="myUrl"/>
<s:form action="%{#myUrl}"> 

事实上,Struts标签的属性不仅不接受脚本片段,也不接受JSTL EL表达式。

s:form操作中没有必要使用s:url标签。 - Aleksandr M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接