liguofeng29’s blog

個人勉強用ブログだっす。

Struts2 - 自動型変換

Struts2は、自動的にリクエストパラメータを適切な型に変換してくれる。

基本型 + 配列 + 集合

  • boolean,Boolean
  • char,Character
  • int,Integer
  • long,Long
  • float,Float
  • Date
  • Array
  • 集合 : デフォルトではArrayList

OGNLに基づく変換

集合(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>