现有一项目使用的Spring webwork 框架 数据库使用jdbc 现在前端有数据 。大概60个字段的数据 ,pojo里有此对象
现在需要前端传值到后台 希望可以action 可以接受 对象(不想传输/接收60个字段那样pojo里的对象就没有意义了)请问使用什么方式才能传过来对象呢 ! 求助各位大神 新手好痛苦 补充一下前端使用的EXTJS2
java web项目 传值问题Spring webwork 框架
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- viewgroup 2016-04-05 02:03关注
使用映射,主要就是方法映射,只要传过来的字段和你的pojo对象里面的字段一样,就可以set这个字段。/**
- Copyright (c) 2011-2015, James Zhan 詹波 (jfinal@126.com). *
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at *
- http://www.apache.org/licenses/LICENSE-2.0 *
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License. */
package com.jfinal.core;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.ActiveRecordException;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.Table;
import com.jfinal.plugin.activerecord.TableMapping;/**
-
ModelInjector
*/
final class ModelInjector {@SuppressWarnings("unchecked")
public static T inject(Class<?> modelClass, HttpServletRequest request, boolean skipConvertError) {
String modelName = modelClass.getSimpleName();
return (T)inject(modelClass, StrKit.firstCharToLowerCase(modelName), request, skipConvertError);
}@SuppressWarnings({ "rawtypes", "unchecked" })
public static final T inject(Class<?> modelClass, String modelName, HttpServletRequest request, boolean skipConvertError) {
Object model = null;
try {
model = modelClass.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}if (model instanceof Model) injectActiveRecordModel((Model)model, modelName, request, skipConvertError); else injectCommonModel(model, modelName, request, modelClass, skipConvertError); return (T)model;
}
private static final void injectCommonModel(Object model, String modelName, HttpServletRequest request, Class<?> modelClass, boolean skipConvertError) {
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; String attrName = methodName.substring(3); String value = request.getParameter(modelName + "." + StrKit.firstCharToLowerCase(attrName)); if (value != null) { try { method.invoke(model, TypeConverter.convert(types[0], value)); } catch (Exception e) { if (skipConvertError == false) throw new RuntimeException(e); } } }
}
@SuppressWarnings("rawtypes")
private static final void injectActiveRecordModel(Model<?> model, String modelName, HttpServletRequest request, boolean skipConvertError) {
Table table = TableMapping.me().getTable(model.getClass());String modelNameAndDot = modelName + "."; Map<String, String[]> parasMap = request.getParameterMap(); for (Entry<String, String[]> e : parasMap.entrySet()) { String paraKey = e.getKey(); if (paraKey.startsWith(modelNameAndDot)) { String paraName = paraKey.substring(modelNameAndDot.length()); Class colType = table.getColumnType(paraName); if (colType == null) throw new ActiveRecordException("The model attribute " + paraKey + " is not exists."); String[] paraValue = e.getValue(); try { // Object value = Converter.convert(colType, paraValue != null ? paraValue[0] : null); Object value = paraValue[0] != null ? TypeConverter.convert(colType, paraValue[0]) : null; model.set(paraName, value); } catch (Exception ex) { if (skipConvertError == false) throw new RuntimeException("Can not convert parameter: " + modelNameAndDot + paraName, ex); } } }
}
}
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 基于卷积神经网络的声纹识别
- ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
- ¥100 为什么这个恒流源电路不能恒流?
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 stm32开发clion时遇到的编译问题