Thẻ action trong Struts 2



Thẻ này cho phép lập trình viên gọi các action một cách trực tiếp từ một JSP page bằng việc xác định tên action và một namespace tùy ý. Phần thân thẻ được sử dụng để truyền các result từ Action. Bất kỳ result processor nào được định nghĩa cho action này trong struts.xml sẽ bị bỏ qua, trừ khi tham số executeResult được xác định.

Tạo lớp Action

package com.vietjack.struts2;public class HelloWorldAction{
   private String name;   public String execute() throws Exception {
      return "success";
   }
   
   public String getName() {
      return name;
   }   public void setName(String name) {
      this.name = name;
   }
}

Tạo các thành phần View

HelloWorld.jsp để minh họa sự sử dụng của thẻ generator:

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>


Hello World

Vi du cua the generator

Rainbow bao gom cac mau:


employees.jsp có nội dung sau:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>


Employees


   
      Output from Hello:  

Tạo các file cấu hình

struts.xml





      
      /HelloWorld.jsp
   
   
      /employee.jsp
      

web.xml



   
   Struts 2
   
      index.jsp
   
   
      struts2
      
         org.apache.struts2.dispatcher.FilterDispatcher
      
      
      struts2
      /*
   

Như bạn có thể thấy trong ví dụ này, chúng ta đã xác định giá trị của executeResult là true. Vì thế, kết quả của hello.action được truyền trực tiếp trong trang. HelloWorld.jsp in các màu của rainbow, mà bây giờ được truyền trực tiếp bên trong employee.jsp.

Bây giờ chúng ta sửa đổi một chút HelloWorldAction.java.

package com.vietjack.struts2;import java.util.ArrayList;
import java.util.List;import org.apache.struts2.ServletActionContext;public class HelloWorldAction{
   private String name;
   public String execute()
   {
      List names = new ArrayList();
      names.add("Robert");
      names.add("Page");
      names.add("Kate");
      ServletActionContext.getRequest().setAttribute("names", names);
      return "success";
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}

Sửa đổi employee.jsp như sau:

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>


Employees


   
   
      Output from Hello:  

Bây giờ bạn chạy ứng dụng và kiểm tra kết quả.


data_tag_trong_struts_2.jsp