2013-10-04 9 views
7

Gibt es eine Möglichkeit, ein dynamisches action-Attribut im s:form-Tag in Struts2 anzugeben? Ich möchte etwas wie das Folgende.Dynamisch s: Formularaktion

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

Ich weiß, dass dies mit Javascript erreicht werden kann, aber ich möchte Refactoring vermeiden. Ich habe versucht, dies mit Scriplets zu erreichen, aber das Problem ist, dass Struts2 Tags Laufzeitattribute nicht dauert. Ich habe es sogar mit OGNL versucht, aber es hat auch nicht geholfen.

Antwort

7

Verwenden Sie Struts2-Tags, um Werte festzulegen und die Bedingung zu überprüfen, und verwenden Sie dann OGNL, um das Attribut action zu setzen.

<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

Verwenden Sie die s:url Tag die Aktion url dynamisch zu bauen.

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

In der Tat Struts-Tag-Attribute nicht akzeptieren, nicht nur Scriptlets sondern auch Ausdrücke JSTL EL.

+0

Es ist nicht notwendig, '' Tag für '' Aktion zu verwenden. –

Verwandte Themen