日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java request 封装对象_java通过request自动封装复杂对象

發布時間:2023/12/10 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java request 封装对象_java通过request自动封装复杂对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:Jfinal源碼,在上面基礎上改的,然后分享出來

適用JAVAEE平臺

[Java]代碼

/**

* 實現深層封裝對象的實例 從request封裝對象

* 舉例:

* House.class 屬性有三個 ID:id 名稱:name 門類:Door door

Door類: id name height

傳遞的參數:house.id=5 & house.name=普通住宅 & door.id=33 & door.name=木門 & door.height=500 就可以自動封裝

*/

private static final T injectCommonModel(Object model, String modelName, HttpServletRequest request, Class> modelClass, boolean skipConvertError) throws Exception{

Method[] methods = modelClass.getMethods();

for (Method method : methods) {

String methodName = method.getName();

if (methodName.startsWith("set") == false)// only setter method

continue;

Class>[] types = method.getParameterTypes();

if (types.length != 1)// only one parameter

continue;

if(TypeConverter.judgeBasicType(types[0])){ //判斷是否基本類型

String attrName = methodName.substring(3);

String value = request.getParameter(modelName + "." + StrKit.firstCharToLowerCase(attrName));

if (value != null) {

method.invoke(model, TypeConverter.convert(types[0], value));

}

}else{

Object newModel = types[0].newInstance();

String newModelName = newModel.getClass().getSimpleName();

newModel = injectCommonModel(newModel, StrKit.firstCharToLowerCase(newModelName), request, newModel.getClass(), skipConvertError);

if (newModel != null) {

method.invoke(model, newModel);

}

}

}

return (T)model;

}

總結

以上是生活随笔為你收集整理的java request 封装对象_java通过request自动封装复杂对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。