http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com Chuyển đổi kiểu Struts Mọi thứ HTTP request đối xử String Protocol Chúng bao gồm số, giá trị Boolean, date, giá trị nguyên, thập phân, … Vậy đâu cách Struts tự động viết property cho bạn Struts sử dụng kiểu Converter đa dạng để tự động chuyển đổi kiểu cho bạn Chẳng hạn, bạn có thuộc tính integer lớp Action, Struts tự động chuyển đổi tham số request thành thuộc tính integer mà khơng cần bạn làm điều Đơi khi, bạn sử dụng kiểu liệu riêng, việc cần thiết thêm trình Converter riêng bạn để làm cho Struts biết cách để chuyển đổi giá trị trước hiển thị chúng Giả sử có lớp POJO có tên Environment.java: package com.vietjack.struts2; public class Environment { private String name; public Environment(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } Lớp đơn giản có thuộc tính name Bây tạo lớp khác mà chứa thơng tin hệ thống, lớp SystemDetails.java Với mục đích chương này, hardcode Environment thành "Development" Operating System thành "Windows XP SP3" Trong project thực, bạn lấy thông tin từ system configuration Bây có lớp Action sau: package com.vietjack.struts2; http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com import com.opensymphony.xwork2.ActionSupport; public class SystemDetails extends ActionSupport { private Environment environment = new Environment("Development"); private String operatingSystem = "Windows XP SP3"; public String execute() { return SUCCESS; } public Environment getEnvironment() { return environment; } public void setEnvironment(Environment environment) { this.environment = environment; } public String getOperatingSystem() { return operatingSystem; } public void setOperatingSystem(String operatingSystem) { this.operatingSystem = operatingSystem; } } Bây tạo System.jsp đơn giản để hiển thị thông tin Environment Operating System: System Details http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com Environment: Operating System: Bây giờ, viết system.jsp SystemDetails.java với sử dụng struts.xml LớpSystemDetails có phương thức execute() mà trả chuỗi SUCCESS /System.jsp Khi triển khai ứng dụng trên, có vấn đề xảy là: Struts biết cách hiển thị chuyển đổi chuỗi "Windows XP SP3" kiểu liệu xây dựng sẵn khác, làm với property kiểu Environment Để giải vấn đề này, bạn tạo TypeConverter cho lớp Environment Tạo lớpEnvironmentConverter.java sau: package com.vietjack.struts2; import java.util.Map; http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com import org.apache.struts2.util.StrutsTypeConverter; public class EnvironmentConverter extends StrutsTypeConverter { @Override public Object convertFromString(Map context, String[] values, Class clazz) { Environment env = new Environment(values[0]); return env; } @Override public String convertToString(Map context, Object value) { Environment env = (Environment) value; return env == null ? null : env.getName(); } } Lớp EnvironmentConverter kế thừa lớp StrutsTypeConverter nói cho Struts biết cách chuyển đổi Environment thành String ngược lại, cách ghi đè hai phương thứcconvertFromString() convertToString() Bây đăng ký Converter trước sử dụng ứng dụng Có hai cách để đăng ký Converter Nếu Converter sử dụng Action cụ thể bạn phải tạo property file có tên dạng '[action-class]'-converstion.properties Do đó, tạo file gọi SystemDetails-converstion.properties có entry đăng ký sau: environment=com.vietjack.struts2.EnvironmentConverter Trong ví dụ trên, "environment" tên thuộc tính lớp SystemDetails.java nói cho Struts để sử dụng EnvironmentConverter để chuyển đổi sang từ thuộc tính Tuy nhiên, khơng làm điều này, thay vào đó, sử dụng cách thứ hai đăng ký Converter cách toàn cục (global) để sử dụng ứng dụng Để làm điều này, bạn tạo property file xwork-conversion.properties WEB-INF/classes folder sau: com.vietjack.struts2.Environment = \ http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/struts_2/index.jsp Copyright © vietjack.com com.vietjack.struts2.EnvironmentConverter Đó cách đăng ký toàn cục cho Converter để Struts tự động chuyển đổi kiểu gặp đối tượng có kiểu Environment chẳng hạn Bây giờ, bạn biên dịch chạy lại chương trình cho kết tốt http://vietjack.com/ Trang chia sẻ học online miễn phí Page ... Struts Configuration 2. 0//EN" "http:/ /struts. apache.org/dtds /struts- 2. 0.dtd">