<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 有一个值。其余都没有返回到后台,

解决方案 »

  1.   

    这个是可以做到的,把form中的值用js拼接成一个参数列表,再用ajax以post的方式提交到后台即可
    如果你只想用于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);
    }
    }
    }
    }
    }