Jfinal 表单提交和转model的时候使用blog.title有什么玄机?

foxlee 发布于 2013/05/08 23:53
阅读 1K+
收藏 1
@alvinte @JFinal @绝望的八皮 @缪斯的情人 各位好,想跟各位请教个问题: Jfinal 表单提交和转model的时候使用blog.title有什么玄机?能否不使用blog.title,而直接使用title,非常感谢jfinal框架的强大和精简!谢谢~~
加载中
0
JFinal
JFinal

引用来自“foxlee”的答案

非常感谢各位大侠的回答,我现在已经修改了 injectActiveRecordModel的实现,去掉了“model名字.”,直接使用属性名字获取表单值,不知道这样做有没有什么问题?
假如表单中有两个 model,假定是user与blog,后端需要调用 getModel(User.class)、getModel(Blog.class),如何确定哪些字段进入哪个model。JFinal目前的做法无非是建立了命名空间而已
2
绝望的八皮
绝望的八皮
private static final void injectActiveRecordModel(Model<?> model, String modelName, HttpServletRequest request, boolean skipConvertError) {
		TableInfo tableInfo = TableInfoMapping.me().getTableInfo(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 = tableInfo.getColType(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 ModelInjectException("Can not convert parameter: " + modelNameAndDot + paraName, ex);
				}
			}
		}
	}

String modelNameAndDot = modelName + ".";

看这里 其实就是做了一个简单的截取model名字.属性名字


ModelInjector这个类


1
紫电清霜
紫电清霜
当然可以直接使用name=“属性”的提交方式了(在后端用getPara("属性")方法获取参数)。缺点是,如果你不用model+"."+属性,就不能在后端用getModel(xxx.class)方法让所有该model的参数都自动注入model里。
1
foxlee
foxlee
非常感谢各位大侠的回答,我现在已经修改了 injectActiveRecordModel的实现,去掉了“model名字.”,直接使用属性名字获取表单值,不知道这样做有没有什么问题?
Mr.CT
Mr.CT
当你一个表单需要两个model,就知道杯具了!
0
a
alvinte
玄机就是:用“点”语法可以匹配到getModel的约定规则,即,可以使用getModel方法,自动封装到一个Model对象里面,方便使用而已
0
foxlee
foxlee
非常感谢JFinal的解答,确实没有想到这一层应用!
返回顶部
顶部