2008-12-17 33 views
7

Tôi phải chuyển một số tham số từ một hành động sang hành động khác, ví dụ như để theo dõi sự kiện.Tham số Struts2 giữa các hành động

Cách tốt nhất để làm điều đó là gì?

Tôi sẽ không sử dụng thông số phiên. Cảm ơn

Trả lời

11

Giả sử bạn là máy chủ trong một hành động và có nhu cầu gọi một hành động khác với một số thông số.

Bạn có thể sử dụng s: tag hành động để gọi hành động khác, có thể có thêm/thông số khác hơn là hành động ban đầu:

<s:action name="myAction" ignoreContextParams="true" executeResult="true"> 
     <s:param name="foo" value="bar"/> 
    </s:action> 

Bạn cũng có thể sử dụng một struts-xml loại kết quả tiêu chuẩn với một tham số:

<result name="success" type="redirect" > 
     <param name="location">foo.jsp?foo=${bar}</param> 
     <param name="parse">true</param> 
     <param name="encode">true</param> 
</result> 

Nếu bạn muốn chuyển hướng phía khách hàng, bạn phải gửi lại url cho khách hàng với thông số thích hợp và có thể sử dụng một số javascript để đến đó.

 <s:url action="myAction" > 
      <s:param name="foo" value="bar"/> 
     </s:url> 
+0

Tôi đã có rất nhiều rắc rối figuring this out: không hoạt động trong Struts 2.1.8.1. Sau khi nâng cấp lên Struts 2.2.1 mọi thứ đều ổn. Đã không tìm thấy một lưu ý về điều đó ở bất cứ đâu. – grefab

1
<td> 
    <s:url id="url" action="Logging"> 
     <s:param name="m_userNameInAction"><s:property value="m_userNameInForm"/></s:param> 
    </s:url> 
    <s:a href="%{url}">English</s:a> 
</td> 
+0

xin lỗi ?? tôi có nên trả lời không? xin vui lòng, không spam lookin 'cho điểm số. – Giancarlo

1

thẻ Sử dụng url trong các thẻ thanh chống cốt lõi, mẫu được đưa ra dưới đây:

   <s:url var="idurl" action="EditEnterprise"> 
        <s:param name="enterpriseId"> 
         <s:property value="enterpriseId" /> 
        </s:param> 
       </s:url> 
0

trên thực tế, phạm vi và ServletConfig đánh chặn có thể được sử dụng trong struts2, để pop tự động bối cảnh hành động tham số, (yêu cầu/phiên, v.v.)

1

Thực tế bạn sẽ chuyển giá trị thông số hành động của bạn từ một hành động này sang hành động khác.

chỉ cần bao gồm biến đậu có cùng tên. tham số nào bạn sẽ nhận được trên hành động (hành động thu).

<action name="ForwardAction" class="..."> 
     <result name="success" type="chain">ReceiverAction</result> 
</action> 

Thông số hành động chuyển tiếp sẽ được chuyển tiếp đến Hành động nhận. bạn co thể sử dụng no. nhưng bao gồm cùng một tên bean trong cả hai hành động. ..

nếu bạn đang đi để nhận userid trong phương tiện receiveaction,

này phải ở trong cả hành động,

private int userid; 

public void setUserid(int id){ 
    this.userid = userid; 
} 

public int getUserid(){ 
    return userid; 
} 
Các vấn đề liên quan