//电影的javaBean
 public class Movie {
private int id;
private String name;
private Category category;  //记录了电影所属的分类,比如喜剧,悲剧
private Language language;  //记录了电影所属的语言,比如中文,英文}//种类的JavaBeanpublic 
class Category {
private int id;
private String name; }//语种的JavaBeanpublic
class Language{
private int id;
private String name; }我想在JSP前台显示所有电影的具体信息----将电影的类别和语言都显示出来,使用org.apache.commons.dbutils框架怎么做?JSP界面如下:(将所有的movie查询出来传到Jsp界面,显示出来!!!!!)
<c:forEach var="movie" items="${movies}">
    <tr>
        <td>${movie.id}</td>
    <td>${movie.name}</td>
    <td>${movie.maker}</td>
    <td>${movie.category.name}</td>
    <td>${movie.language.name}</td>      
                 </tr>
   
    </c:forEach>这是我之前写的数据库查询代码,但是发现并没有查询出来电影的种类和语言信息,导致前台显示不出来???
// @Override
// public List getAll(){
// try {
// Connection conn = JdbcUtils.getConnection();
// QueryRunner runner = new QueryRunner();
// String sql = "select * from movie";
// return (List) runner.query(conn, sql, new BeanListHandler(Movie.class));
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }
这是我之前的做法,但是没有查询出movie的category属性 

解决方案 »

  1.   

    没用过这东西,你应该到java语言版本
    不过我猜测取不到值是因为category不是值类型而是一个类,handler无法自动mapping试试下面的能否参考(网上摘录的)(List<State>) new QueryRunner().query(conn, "select * from states", new BeanListHandler(State.class,new BasicRowProcessor(new StateBeanProcessor())));public class StateBeanProcessor extends BeanProcessor {    @Override
        protected  int[] mapColumnsToProperties(ResultSetMetaData rsmd, PropertyDescriptor[] props) throws SQLException {
              int[] mapping = super.mapColumnsToProperties(rsmd, props);
              /*Map database columns to fields in the order in which they appear
                1st column in the DB will be mapped to 1st field in the Java
                class and so on.. */
              for(int i=0;i<mapping.length;++i) {
                 mapping[i]=i;
              }
          }
      }