struts1中jsp怎么传递实体类到action ?

2024-11-24 08:30:28
推荐回答(3个)
回答1:

每一行都是一个dto对象,指定相同的name就可以了。

 protected List getBeanListForRequest(HttpServletRequest request,
                                         Class beanClass) {
        // 数据条数
        int rowCount = 0;
        List beanList = new java.util.ArrayList();
        // 根据bean中的属性从reqeust获取字段列表
        Field[] fields = getFieldsFromClass(beanClass);
        // 存放所有的字段的name\value
        Vector fieldVector = new Vector();
        for (int i = 0; i < fields.length; i++) {
            // 字段的name\value
            Vector field = new Vector();
            String[] valueList = request.getParameterValues(fields[i].getName());
            if (valueList == null) {
                continue;
            }
            // 如果数据条数未设置,则设置之
            if (rowCount == 0)
                rowCount = valueList.length;
            field.add(fields[i].getName());
            field.add(valueList);
            fieldVector.add(field);
        }
        // 创建对象列表
        for (int j = 0; j < rowCount; j++) {
            try {
                beanList.add(beanClass.newInstance());
            }
            catch (InstantiationException e) {
                log.error(e.getMessage(), e);
            }
            catch (IllegalAccessException e) {
                log.error(e.getMessage(), e);
            }
        }
        // 给对象的字段设置值
        for (int i = 0; i < fieldVector.size(); i++) {
            Vector field = (Vector) fieldVector.elementAt(i);
            String fieldName = (String) field.elementAt(0);
            String[] fieldValue = (String[]) field.elementAt(1);
            if (fieldValue == null) {
                continue;
            }
            for (int j = 0; j < fieldValue.length; j++) {
                try {
                    if (j >= beanList.size()) {
                        break;
                    }
                    BeanUtils.setProperty(beanList.get(j),
                                          fieldName,
                                          fieldValue[j]);
                }
                catch (IllegalAccessException e) {
                    log.error(e.getMessage(), e);
                }
                catch (InvocationTargetException e) {
                    log.error(e.getMessage(), e);
                }
            }
        }
        return beanList;
    }

回答2:

没太明白?你指是实体是什么?如果是页面数据的话,struts1 是通过actionForm封装页面数据传递给action的

回答3:

如果数据少的话,可以试试在跳转路径上,添加传递参数!另外问下,在后台的action,你的set,get方法,写了嘛?