我在堆栈和互联网上进行了搜索,但没有找到解决我问题的答案。
我尝试通过 servlet 将 ArrayList 从 ejb 显示到 jsp 页面。我使用 mysql-connector-java-5.1.22-bin 而不是 jdbc。我成功从数据库获取数据,但 servlet 无法将此 ArrayList 发送到 jsp 页面。你能帮我吗?我已经尝试了很多检查,似乎问题是当我在 servlet 中获取数组列表时。我可能错误地调用了它。
这是我的代码:
访问Bean:
public class accessBean implements accesCatalogueBeanRemote, accesCatalogueBeanLocal {
public List getLivresList() {
String flightQuery = "SELECT p FROM produit p";
Query q = em.createQuery(flightQuery);
List existing = q.getResultList();
return existing;
}
}
我的servlet:
@WebServlet("/servlet")
public class servlet_produit extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(true);
List list = null;
//Connexion JNDI (annuaire pour localiser l'EJB)
try{
final Hashtable jndiProperties = new Hashtable();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
final Context context = new InitialContext(jndiProperties);
final String appName = "BktEAR";
final String moduleName = "Commands";
final String beanName = "JNDI";
final String viewClassName = accesCatalogueBeanRemote.class.getName();
accesCatalogueBeanRemote remote = (accesCatalogueBeanRemote)
context.lookup("ejb:"+appName+"/"+moduleName+"/"+
beanName+"!"+viewClassName);
list = remote.getLivresList();
}
catch (Exception e) {
e.printStackTrace();
}
session.setAttribute("books", list);
response.sendRedirect("product.jsp");
}
}
以及我在 jsp 页面中调用 servlet 的地方:
<c:forEach items="${books}" var="list">
<tr>
<td>ok : ${list.id}</td>
<td><c:out value="${list.name}" /></td>
<td><c:out value="${list.description}" /></td>
<td><fmt:formatNumber value="${list.price}" type="currency" /></td>
</tr>
</c:forEach>
提前致谢。
最佳答案
您正在将数据放入您的 session 中的这一行
session.setAttribute("books", list);
所以你应该在 jsp 中从 session 中检索它们。您可以使用${sessionScope.books}
在jsp中访问session。
这会对您有所帮助:
<c:forEach items="${sessionScope.books}" var="list">
<tr>
<td>ok : ${list.id}</td>
<td><c:out value="${list.name}" /></td>
<td><c:out value="${list.description}" /></td>
<td><fmt:formatNumber value="${list.price}" type="currency" /></td>
</tr>
</c:forEach>
关于java - 显示ArrayList(EJB session +Servlet+JSP,无JDBC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53769975/