我正在使用Servlet和JSP一个非常基本的web应用程序,我有以下设置:混淆的Web应用程序干将
public class DataManager {
//some method implementations omitted since they are not important
public DataManager(){}
public class Author{
public int id;
public String name;
public String born;
public String died;
}
public Author getAuthor(int authorId){}
public ArrayList<Author> getAuthors(){}
}
public class AuthorsServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
ServletContext context = getServletContext();
DataManager dm = (DataManager) context.getAttribute("datamanager");
ArrayList<DataManager.Author> authors = dm.getAuthors();
request.setAttribute("authors", authors);
request.getRequestDispatcher("/authors.jsp").forward(request, response);
}
}
在我的JSP文件中我有:
<c:forEach var="author" items="${authors}">
<tr>
<td>${author.id}</td>
<td><a href="author.jsp">${author.name}</a></td>
<td>${author.born}</td>
<td>${author.died}</td>
</tr>
</c:forEach>
但是,我一直得到一个错误,说Property 'id' not found on type db.DataManager$Author
,直到我把我的DataManager
类的Author
类的Author
类中的吸气剂:
public class Author{
public int id;
public String name;
public String born;
public String died;
public int getId(){ return id; }
public String getName(){ return name;}
public String getBorn(){return born; }
public String getDied(){ return died;}
}
我有两个(种基本)问题:
我为什么要添加干将访问公共内部类的变量?
我放在干将后,也没直接叫他们(即
author.id
而不是author.getId()
)是那里的编译器遵循的命名惯例,所以我必须定义getFoo
得到foo
的价值变量?
JSP遵循java bean模式,请参阅[https://docs.oracle.com/javase/tutorial/javabeans/writing/properties.html](https://docs.oracle.com/javase/tutorial/) javabeans/writing/properties.html) [http://www.java-samples.com/showtutorial.php?tutorialid=552](http://www.java-samples.com/showtutorial.php?tutorialid= 552) – daotan