2013-10-04 18 views
7

Esiste un modo per specificare un attributo dinamico action nel tag s:form in Struts2? Voglio qualcosa come il sotto.Dinamica: azione modulo

<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> 

So che questo può essere ottenuto utilizzando javascript ma voglio evitare il refactoring. Ho provato a raggiungere questo utilizzando gli scriplet ma il problema è che i tag Struts2 non accettano gli attributi di runtime . Ho provato anche con l'OGNL, ma non è stato d'aiuto neanche io.

risposta

7

Utilizzare i tag Struts2 per impostare i valori e verificare le condizioni, quindi utilizzare OGNL per inserire l'attributo 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

utilizzare il tag s:url per costruire l'URL azione dinamicamente.

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

In effetti gli attributi del tag Struts non accettano non solo gli scriptlet ma anche le espressioni JSTL EL.

+0

Non è necessario utilizzare il tag '' per ''. –

Problemi correlati