求助,如何使用getBean()方法


      有三个表,表A(基本信息表)和表B(关联表一)和表C(关联表二),三个表通过外连接成一个表,然后查询出来一些信息,对表A对应的实体类JA进行改造,使之包含查询出来的所有属性,然后就可以直接将JA封装好传递给前台;前台编辑好了之后,重新用同样的格式传递给后台,这时,后台报错,显示表没有这个属性,求助!具体图文描述如下

 image.png
进行查询

select a.*,b.phone,c.qq from 表A a 
left join 表B b on a.id=b.aid 
left join 表C c on a.id=c.aid

对应java类

public class Ja extends BaseJa<Ja> {
    public static final FileRelation dao = new FileRelation();
    public M setPhone(java.lang.String phone) {
        set("phone", phone);
        return (M)this;
    }
    public java.lang.String getPhone() {
        return getStr("phone");
    }
    public M setQq(java.lang.String qq) {
        set("qq", phone);
        return (M)this;
    }
    public java.lang.String getQq() {
        return getStr("qq");
    }
 }

现在已经能够查询出来了,没有任何的问题

问题在于getBean()方法 
如果提交以下表单 
ja.id 
ja.name 
ja.age 
ja.phone 
ja.qq 
用getBean()方法接收就会报错~


评论区

杜福忠

2018-02-01 10:02

想不报错 只需要在后面加个 true
getBean(Class beanClass, boolean skipConvertError)
getBean(beanClass, true)
不贴异常信息还得猜。。
看看源码:打个断点进去看看吧~


public static T injectBean(Class beanClass, HttpServletRequest request, boolean skipConvertError) {
String beanName = beanClass.getSimpleName();
return (T)injectBean(beanClass, StrKit.firstCharToLowerCase(beanName), request, skipConvertError);
}

@SuppressWarnings("unchecked")
public static final T injectBean(Class beanClass, String beanName, HttpServletRequest request, boolean skipConvertError) {
Object bean = createInstance(beanClass);
String modelNameAndDot = StrKit.notBlank(beanName) ? beanName + "." : null;
TypeConverter converter = TypeConverter.me();
Map parasMap = request.getParameterMap();
Method[] methods = beanClass.getMethods();
for (Method method : methods) {
String methodName = method.getName();
if (methodName.startsWith("set") == false || methodName.length() <= 3) { // only setter method
continue;
}
Class[] types = method.getParameterTypes();
if (types.length != 1) { // only one parameter
continue;
}

String attrName = StrKit.firstCharToLowerCase(methodName.substring(3));
String paraName = modelNameAndDot != null ? modelNameAndDot + attrName : attrName;
if (parasMap.containsKey(paraName)) {
try {
String paraValue = request.getParameter(paraName);
Object value = paraValue != null ? converter.convert(types[0], paraValue) : null;
method.invoke(bean, value);
} catch (Exception e) {
if (skipConvertError == false) {
throw new RuntimeException(e);
}
}
}
}

return (T)bean;
}

热门反馈

扫码入社