我已经在堆栈和互联网上进行搜索,但找不到问题所在的答案。
我尝试通过servlet从ejb到jsp页面显示ArrayList。我使用mysql-connector-java-5.1.22-bin而不是jdbc。我成功地从数据库中获取了数据,但是servlet无法将此ArrayList发送到jsp页面。你能帮我吗?我已经尝试了许多检查,看来问题出在当我在servlet中获得arraylist时。我可能不好称呼它。
这是我的代码:
accessBean:
def __init__(self, connection=None, some=None, thing=None, else=None):
self.connection = SetConnection() if connection is None else connection
我的servlet:
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;
}
}
我在jsp页面中调用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");
}
}
多谢。
答案 0 :(得分:1)
您正在此行将数据放入会话中
session.setAttribute("books", list);
因此,您应该从会话的jsp中检索它们。您可以使用${sessionScope.books}
在jsp中访问会话。
这将帮助您:
<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>