2013-10-04 17 views
7

Có cách nào xác định thuộc tính động action trong thẻ s:form trong Struts2 không? Tôi muốn một cái gì đó như dưới đây.Dynamic s: form 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> 

Tôi biết điều này có thể đạt được bằng cách sử dụng javascript nhưng tôi muốn tránh tái cấu trúc. Tôi đã cố gắng đạt được điều này bằng cách sử dụng các tập lệnh nhưng vấn đề là các thẻ Struts2 không có thuộc tính thời gian chạy là . Tôi đã thử ngay cả với OGNL nhưng nó cũng không giúp được gì.

Trả lời

7

Sử dụng thẻ Struts2 để đặt giá trị và kiểm tra điều kiện và sau đó sử dụng OGNL để đặt thuộc tính 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ử dụng thẻ s:url để xây dựng các url hành động động.

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

Thuộc tính của thẻ Struts không chấp nhận không chỉ tập lệnh mà còn cả biểu thức JSTL EL.

+0

Không cần sử dụng thẻ '' cho tác vụ ''. –