public class LoginAction implements Action{
private List users;
public void setUsers(List users){
this.users=users;
}
public List getUsers(){
return this.users;
}
public String execute() throws Exception{
return "SUCCESS";
}
}
例如這樣一個例子,我們沒有使用泛型,struts2無法知道Action的users屬性裡集合元素的類型。
struts2可以讓開發者通過局部類型轉換文件來指定集合元素的類型。類型轉換文件是一個普通的Properties(.*properties)文件,類型轉換文件裡提供了類型轉換的相關配置信息。
類型轉換文件的文件名應該是:ActionName-conversion.properties形式,其中ActionName是Action的類名,後面的-conversion.properties字符串是固定部分。類型轉換文件應該放在和Action類文件相同的位置。
例如為上面的Action提供一個類型轉換文件,在該Action相同的目錄下新建一個LoginAction-conversion.properties文件,然後在該文件中添加key-value對
Element_users=com.test.domain.User
指定users集合屬性的集合元素類型是com.test.domain.User類型。
對於Map類型的屬性,需要同時指定Map的key類型和value類型。為了指定Map類型屬性的key類型,應該在類型轉換文件中增加如下項:
Key_<MapPropName>=<KeyType>
其中Key是固定寫法,<MapPropName>是Map類型屬性的屬性名,復合類型指定的是Map的Key值的全限定類名。
為了指定Map屬性的value類型,還應該在局部類型轉換文件中增加以下項:
Element_<MapPropName>=<ValueType>
其中Element是固定寫法,<MapPropName>是Map類型屬性的屬性名,復合類型指定的是Map屬性的value值得全限定類名。