Показать ArrayList (сеанс EJB + сервлет + JSP, без JDBC) - PullRequest
0 голосов
/ 13 декабря 2018

Я выполняю поиск в стеке и в Интернете и не могу найти ответ на мою проблему.

Я пытаюсь отобразить ArrayList из ejb на страницу jsp с помощью сервлета.Я использую mysql-connector-java-5.1.22-bin, а не jdbc.Мне удается получить данные из базы данных, но сервлет не может отправить этот ArrayList на страницу jsp.Вы можете помочь?Я перепробовал много проверок, и, похоже, проблема в том, что я получаю arraylist в сервлете .. Я, вероятно, плохо его называю ..

Вот мой код:

accessBean:

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;
    }

}

Мой сервлет:

@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:

<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>

Заранее спасибо.

1 Ответ

0 голосов
/ 14 декабря 2018

Вы помещаете данные в свой сеанс в этой строке

session.setAttribute("books", list);

Таким образом, вы должны получить их в jsp из сеанса.Вы можете получить доступ к сеансу в jsp, используя ${sessionScope.books}.

. Это поможет вам:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...