<script>
$('#form1').ajaxForm(options);
</script><form id="form1">
<input type="text" id="j" name="usr.name" value="1aaa3" />
<input type="text" id="i" name="usr.sex" value="目" />
<input type="text" id="n" name="usr.id" value="123" />
</form>public void setUsr(User usr) {
this.usr = usr;
}
问题是只能传到里面的一个值。即后台的usr对象里只有sex 有一个值。其余都没有返回到后台,
如果你只想用于User这一种实体对象,后台直接取就行了,
如果你想所有的实体对象共用这种方式,就采用java反射机制:// 给属性赋值
private void setParam(Method []methods, Object object, HttpServletRequest request, HttpServletResponse response) throws Exception {
for (int i = 0; i < methods.length; i++) {
String methodName = methods[i].getName();
if (methodName.length() > 3 && "set".equals(methodName.substring(0, 3)) &&
methods[i].getParameterTypes().length == 1 && "void".equals(methods[i].getReturnType().getName())) {
Class paramClass = methods[i].getParameterTypes()[0];
String paramName = ReflectUtil.getPropertyName(methodName);
String value = request.getParameter(paramName);
if (ReflectUtil.methodIsProperty(methodName, object.getClass())) {
if (paramClass.isArray()) {
if (null != request.getParameterValues(paramName)) {
methods[i].invoke(object, new Object[]{ request.getParameterValues(paramName) });
}
} else if (paramClass.getName().indexOf("java.") != -1) {
ReflectUtil.setValue(methods[i], object, value);
} else {
Object paramObject = paramClass.newInstance();
Method []parammethods = paramClass.getMethods();
for (int j = 0; j < parammethods.length; j++) {
if (parammethods[j].getName().length() > 3 && "set".equals(parammethods[j].getName().substring(0, 3)) && parammethods[j].getParameterTypes().length == 1) {
String lastParamName = paramName + "." + ReflectUtil.getPropertyName(parammethods[j].getName());
String lastValue = request.getParameter(lastParamName);
Class lastClass = parammethods[j].getParameterTypes()[0];
if (lastClass.getName().indexOf("java.") != -1) {
ReflectUtil.setValue(parammethods[j], paramObject, lastValue);
}
}
}
methods[i].invoke(object, paramObject);
}
}
}
}
}