Struts2 - 自動型変換
Struts2は、自動的にリクエストパラメータを適切な型に変換してくれる。
基本型 + 配列 + 集合
- boolean,Boolean
- char,Character
- int,Integer
- long,Long
- float,Float
- Date
- Array
- 集合 : デフォルトではArrayList
OGNLに基づく変換
オブジェクト
- オブジェクトには引数なしのコンストラクターが必要
- setter、getter必要
Map
集合(List,Mapなど)要素型指定 : ローカル型変換ファイルを使う
- ファイル名 : ActionName-conversion.properties
Actionと同じ位置
List : Element_<ListPropName>=<ElementType> ⇒ Element_users=org.xxxsample.User
- Map : Key_<MapPropName>=<KeyType> ,Element<MapPropName>=<ValueType>
OGNLに基づく変換サンプル
package org.crazyit.app.domain; public class User { private String name; private String pass; public void setName(String name) { this.name = name; } public String getName() { return this.name; } public void setPass(String pass) { this.pass = pass; } public String getPass() { return this.pass; } }
import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private User user; public void setUser(User user) { this.user = user; } public User getUser() { return this.user; } public String execute() throws Exception { return SUCCESS; } }
<%@ page contentType="text/html; charset=UTF-8" language="java" errorPage="" %> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html> <html> <head> <title>OGNLによる型変換</title> </head> <body> <s:form action="login"> <!-- user.name --> <s:textfield name="user.name" label="アカウント"/> <!-- user.pass --> <s:textfield name="user.pass" label="パスワード"/> <s:submit value="送信"/> </s:form> </body> </html>