Java EL使用对象访问列表的语法是什么?

Java EL使用对象访问列表的语法是什么?,java,jsp,servlets,el,Java,Jsp,Servlets,El,我很难弄清楚如何使用EL表达式在ArrayList中显示对象的属性 外部的许多教程显示了以下简单示例: List<String> test = new ArrayList<String>(); request.setAttribute("test", test); test.add("moo"); List test=newarraylist(); setAttribute(“test”,test); 测试。添加(“moo”); 而且效果很好 <p>${t

我很难弄清楚如何使用EL表达式在ArrayList中显示对象的属性

外部的许多教程显示了以下简单示例:

List<String> test = new ArrayList<String>();
request.setAttribute("test", test);
test.add("moo");
List test=newarraylist();
setAttribute(“test”,test);
测试。添加(“moo”);
而且效果很好

<p>${test[0]}</p>
${test[0]}

当ArrayList包含具有属性的实际对象时,该值不会显示。 下面的代码获取查询结果并存储到数据传输对象“DTOTopics”中,然后 我将对象添加到ArrayList中

    List<DTOTopics> list = new ArrayList<DTOTopics>();
    request.setAttribute("recentTopics", list);
    list = factory.getDAOTopics().findByLimit(5);
List List=new ArrayList();
setAttribute(“最近主题”,列表);
list=factory.getdaotics().findByLimit(5);
HTML

ArrayList中的每个元素都是对象DTOTopics,所以我试图访问它的一个属性“title”,但页面上没有显示任何内容

<h1>${recentTopics[0].title}</h1> //why this doesn't work???
${recentTopics[0].title}//为什么这不起作用???
Servlet

public class ShowRecentTopicsAction implements Action {

 @Override
 public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {

  DAOFactory factory = null;
  List<DTOTopics> list = new ArrayList<DTOTopics>();
  request.setAttribute("recentTopics", list);

  try {
   factory = DAOFactory.getInstance();
   list = factory.getDAOTopics().findByLimit(5);
  } 
  catch (DAOConfigurationException e) {
   Logger.log(e.getMessage() + " DAOConfEx, PostRegisterServlet.java.", e.getCause().toString());
  }
  catch (DAOException e) {
   Logger.log(e.getMessage()+ " DAOEx, PostRegisterServlet.java", e.getCause().toString());
  }

  System.out.println("getRecentTopics() list = " + list);//just check if list returns null

            //for testing
  DTOTopics t = list.get(0);
  System.out.println("TEST:::" + t.getTitle()); //ok

            //these test works fine too
  List<String> test = new ArrayList<String>();
  request.setAttribute("test", test);
  test.add("moo");
  Map<String, String> map = new HashMap<String, String>();
  request.setAttribute("mmm", map);
  map.put("this", "that");

  return "bulletinboard";
 }

}
public类ShowRecentTopicsAction实现操作{
@凌驾
公共字符串执行(HttpServletRequest请求、HttpServletResponse响应)引发异常{
DAOFactory=null;
列表=新的ArrayList();
setAttribute(“最近主题”,列表);
试一试{
factory=DAOFactory.getInstance();
list=factory.getdaotics().findByLimit(5);
} 
捕获(DAOConfigurationException e){
log(例如getMessage()+“DAOConfEx,PostRegisterServlet.java.”,例如getCause().toString());
}
捕获(DAOE){
Logger.log(例如getMessage()+“DAOEx,PostRegisterServlet.java”,例如getCause().toString());
}
System.out.println(“getRecentTopics()list=“+list”);//只需检查list是否返回null
//用于测试
DTOTopics t=list.get(0);
System.out.println(“TEST::”+t.getTitle());//确定
//这些测试也很好
列表测试=新建ArrayList();
setAttribute(“test”,test);
测试。添加(“moo”);
Map Map=newhashmap();
setAttribute(“mmm”,map);
地图。放(“这个”、“那个”);
返回“公告板”;
}
}
这里

List<DTOTopics> list = new ArrayList<DTOTopics>();
request.setAttribute("recentTopics", list);
您正在使用新的arraylist(而不是使用
add()
addAll()
方法填充原始arraylist)重新分配
列表
引用。请求范围中的一个仍然引用原始的空arraylist

Move
request.setAttribute(“recentTopics”,list)您从DAO获得列表后,它应该可以工作。您的EL非常好。

这里

您正在使用新的arraylist(而不是使用
add()
addAll()
方法填充原始arraylist)重新分配
列表
引用。请求范围中的一个仍然引用原始的空arraylist

Move
request.setAttribute(“recentTopics”,list)您从DAO获得列表后,它应该可以工作。你的头发很好

try {
    factory = DAOFactory.getInstance();
    list = factory.getDAOTopics().findByLimit(5);