代码之家  ›  专栏  ›  技术社区  ›  Muhammad Kashif Nazar

动态s:形式动作

  •  7
  • Muhammad Kashif Nazar  · 技术社区  · 12 年前

    有没有办法指定动态 action 中的属性 s:form 标记在支柱2中?我想要下面这样的东西。

    <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 回复  |  直到 12 年前
        1
  •  7
  •   Aleksandr M    12 年前

    使用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
  •  2
  •   Roman C    12 年前

    使用 s:url 标记以生成操作url 动态地 .

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

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