Springboot@InitBinderラベルフォームデータへのバインド
55899 ワード
文書ディレクトリ記事参照 @InitBinderの役割 springMVCフォーム注入オブジェクトの実現原理 Controllerクラスに@InitBinder注記メソッドを追加 を解決 Controllerクラス統合BaseControllerクラス(@InitBinderメソッド実装タイプ変換あり) 記事参照 @InitBinderの役割 springMVCフォーム注入オブジェクトの実現原理 Controllerクラスに@InitBinder注記メソッドを追加 を解決 Controllerクラス統合BaseControllerクラス(@InitBinderメソッド実装タイプ変換あり) 記事リファレンス spring mvc@InitBinderラベルを使用してフォームデータをバインド @InitBinderの役割
SpringMVCではbeanでDate,double,Integerなどのタイプが定義されており、フォームでコミットされたデータ(文字列)はエンティティオブジェクトに変換する属性にはなりませんので@InitBinderでデータ型変換を行う必要があります
SpringMVCフォーム注入オブジェクトの実現原理
ではspring mvcはフォームをバインドする前に、CustomBooleanEditor、CustomNumberEditorなどのエディタを登録します.もちろん、面倒でなければ、コントロールに単独で書くこともできます.
Controllerクラスに@InitBinder注記メソッドを追加して解決
ControllerクラスにBaseControllerクラスを統合(@InitBinderメソッドによるタイプ変換あり)
記事リファレンス spring mvc@InitBinderラベルを使用してフォームデータをバインド @InitBinderの役割
SpringMVCではbeanでDate,double,Integerなどのタイプが定義されており、フォームでコミットされたデータ(文字列)はエンティティオブジェクトに変換する属性にはなりませんので@InitBinderでデータ型変換を行う必要があります
SpringMVCフォーム注入オブジェクトの実現原理
ではspring mvcはフォームをバインドする前に、CustomBooleanEditor、CustomNumberEditorなどのエディタを登録します.もちろん、面倒でなければ、コントロールに単独で書くこともできます.
Controllerクラスに@InitBinder注記メソッドを追加して解決
ControllerクラスにBaseControllerクラスを統合(@InitBinderメソッドによるタイプ変換あり)
SpringMVCではbeanでDate,double,Integerなどのタイプが定義されており、フォームでコミットされたデータ(文字列)はエンティティオブジェクトに変換する属性にはなりませんので@InitBinderでデータ型変換を行う必要があります
SpringMVCフォーム注入オブジェクトの実現原理
ではspring mvcはフォームをバインドする前に、CustomBooleanEditor、CustomNumberEditorなどのエディタを登録します.もちろん、面倒でなければ、コントロールに単独で書くこともできます.
Controllerクラスに@InitBinder注記メソッドを追加して解決
package com.hb.goods.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.hb.goods.bean.Goods;
import com.hb.goods.service.GoodsService;
import com.hb.util.BaseController;
@RestController
@RequestMapping(value="/pssGoods")
public class GoodsController extends BaseController{
@Autowired
private GoodsService goodsService;
/** * ; name * @param goodsObj * @return */
@RequestMapping(value="/addGoods", method= {RequestMethod.GET})
public Map addGoods(Goods goodsObj) {
System.out.println(goodsObj.getGoodsName());
goodsService.saveGoods(goodsObj);
Map hashMap = new HashMap();
hashMap.put("resultCode", 1);
return hashMap;
// return "{resultCode: 1}";
}
@RequestMapping( value = "/findByGoodsName/{goodsName}")
@ResponseBody
public List<Goods> findByGoodsName(@PathVariable("goodsName") String goodsName) {
List<Goods> list = goodsService.findGoodsByGoodsName(goodsName);
return list;
}
/** * @InitBinder , WebDataBinder 。 * WebDataBinder DataBinder , JavaBean 。 * @param request * @param binder * BaseController */
@InitBinder
protected void init(HttpServletRequest request, ServletRequestDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));/*TimeZone , 8 */
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
}
ControllerクラスにBaseControllerクラスを統合(@InitBinderメソッドによるタイプ変換あり)
package com.hb.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import com.sun.beans.editors.*;
public class BaseController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));
// binder.registerCustomEditor(int.class, new CustomNumberEditor(int.class, true));
binder.registerCustomEditor(int.class, new IntegerEditor());
// binder.registerCustomEditor(long.class, new CustomNumberEditor(long.class, true));
binder.registerCustomEditor(long.class, new LongEditor());
binder.registerCustomEditor(double.class, new DoubleEditor());
binder.registerCustomEditor(float.class, new FloatEditor());
}
}
package com.hb.goods.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.hb.goods.bean.Goods;
import com.hb.goods.service.GoodsService;
import com.hb.util.BaseController;
@RestController
@RequestMapping(value="/pssGoods")
public class GoodsController extends BaseController{
@Autowired
private GoodsService goodsService;
/** * ; name * @param goodsObj * @return */
@RequestMapping(value="/addGoods", method= {RequestMethod.GET})
public Map addGoods(Goods goodsObj) {
System.out.println(goodsObj.getGoodsName());
goodsService.saveGoods(goodsObj);
Map hashMap = new HashMap();
hashMap.put("resultCode", 1);
return hashMap;
// return "{resultCode: 1}";
}
@RequestMapping( value = "/findByGoodsName/{goodsName}")
@ResponseBody
public List<Goods> findByGoodsName(@PathVariable("goodsName") String goodsName) {
List<Goods> list = goodsService.findGoodsByGoodsName(goodsName);
return list;
}
}
記事リファレンス
SpringMVCではbeanでDate,double,Integerなどのタイプが定義されており、フォームでコミットされたデータ(文字列)はエンティティオブジェクトに変換する属性にはなりませんので@InitBinderでデータ型変換を行う必要があります
SpringMVCフォーム注入オブジェクトの実現原理
ではspring mvcはフォームをバインドする前に、CustomBooleanEditor、CustomNumberEditorなどのエディタを登録します.もちろん、面倒でなければ、コントロールに単独で書くこともできます.
Controllerクラスに@InitBinder注記メソッドを追加して解決
package com.hb.goods.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.hb.goods.bean.Goods;
import com.hb.goods.service.GoodsService;
import com.hb.util.BaseController;
@RestController
@RequestMapping(value="/pssGoods")
public class GoodsController extends BaseController{
@Autowired
private GoodsService goodsService;
/** * ; name * @param goodsObj * @return */
@RequestMapping(value="/addGoods", method= {RequestMethod.GET})
public Map addGoods(Goods goodsObj) {
System.out.println(goodsObj.getGoodsName());
goodsService.saveGoods(goodsObj);
Map hashMap = new HashMap();
hashMap.put("resultCode", 1);
return hashMap;
// return "{resultCode: 1}";
}
@RequestMapping( value = "/findByGoodsName/{goodsName}")
@ResponseBody
public List<Goods> findByGoodsName(@PathVariable("goodsName") String goodsName) {
List<Goods> list = goodsService.findGoodsByGoodsName(goodsName);
return list;
}
/** * @InitBinder , WebDataBinder 。 * WebDataBinder DataBinder , JavaBean 。 * @param request * @param binder * BaseController */
@InitBinder
protected void init(HttpServletRequest request, ServletRequestDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));/*TimeZone , 8 */
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
}
ControllerクラスにBaseControllerクラスを統合(@InitBinderメソッドによるタイプ変換あり)
package com.hb.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import com.sun.beans.editors.*;
public class BaseController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));
// binder.registerCustomEditor(int.class, new CustomNumberEditor(int.class, true));
binder.registerCustomEditor(int.class, new IntegerEditor());
// binder.registerCustomEditor(long.class, new CustomNumberEditor(long.class, true));
binder.registerCustomEditor(long.class, new LongEditor());
binder.registerCustomEditor(double.class, new DoubleEditor());
binder.registerCustomEditor(float.class, new FloatEditor());
}
}
package com.hb.goods.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.hb.goods.bean.Goods;
import com.hb.goods.service.GoodsService;
import com.hb.util.BaseController;
@RestController
@RequestMapping(value="/pssGoods")
public class GoodsController extends BaseController{
@Autowired
private GoodsService goodsService;
/** * ; name * @param goodsObj * @return */
@RequestMapping(value="/addGoods", method= {RequestMethod.GET})
public Map addGoods(Goods goodsObj) {
System.out.println(goodsObj.getGoodsName());
goodsService.saveGoods(goodsObj);
Map hashMap = new HashMap();
hashMap.put("resultCode", 1);
return hashMap;
// return "{resultCode: 1}";
}
@RequestMapping( value = "/findByGoodsName/{goodsName}")
@ResponseBody
public List<Goods> findByGoodsName(@PathVariable("goodsName") String goodsName) {
List<Goods> list = goodsService.findGoodsByGoodsName(goodsName);
return list;
}
}