Java EL使用对象访问列表的语法是什么?
我很难弄清楚如何使用EL表达式在ArrayList中显示对象的属性 外部的许多教程显示了以下简单示例: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
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
Moverequest.setAttribute(“recentTopics”,list)编码>到在您从DAO获得列表后,它应该可以工作。您的EL非常好。这里
您正在使用新的arraylist(而不是使用add()
或addAll()
方法填充原始arraylist)重新分配列表
引用。请求范围中的一个仍然引用原始的空arraylist
Moverequest.setAttribute(“recentTopics”,list)编码>到在您从DAO获得列表后,它应该可以工作。你的头发很好
try {
factory = DAOFactory.getInstance();
list = factory.getDAOTopics().findByLimit(5);