Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по displaytag 
:(
    Опции темы
Enterprise
Дата 13.3.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.6.2006

Репутация: нет
Всего: 1



Передаю из сервлета в JSP результат запроса к ораклу.
исходник странички:
Код

<jsp:root version="1.2"
    xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:sql="http://java.sun.com/jstl/sql"
    xmlns:c="http://java.sun.com/jstl/core"
    xmlns:display="urn:jsptld:http://displaytag.sf.net">
  <jsp:directive.page contentType="text/html; charset=UTF-8" />
  <style type="text/css" media="all">
      @import url("css/maven-base.css");
      @import url("css/maven-theme.css");
      @import url("css/site.css");
      @import url("css/screen.css");
  </style>
  <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
<html>
  <head>
    <title>Table</title>
  </head>
  <body>
<center>
<display:table name="requestScope.results.rows" id="row" pagesize="20" defaultsort="1" defaultorder="ascending" >
    <display:column property="VAL" />
    <display:column property="OBJ" title="Object" sortable="true" headerClass="sortable" />
    <display:column property="DEPT" title="Depart"  />
    <display:column property="TIME" />

    <c:set var="Actions" value="row.val" scope="page" />
    <!--c:set var="Actions" value="${row.val}" scope="page" /-->

    <display:column title="Action" >

        <display:table name="${Actions}" class="simple1" >
            <display:column href="edit.jsp" scope="session" value="Edit" />
            <display:column href="delete.jsp" scope="session" value="Delete" />
        </display:table>

   </display:column>
</display:table>
  </center>
  </body>
</html>
</jsp:root>


Собственно, пытался добиться этим вывода таблицы, последний столбец в которой содержал бы по две ссылки (редактировать и удалить) для каждой строки этой таблицы. Но содержит этот столбец "Nothing found to display." для каждой строки... 
Кроме этого, таблица выводится по 20 строк на странице и сверху ссылки с номерами страниц. Первая страничка выводится, а при попытке просмотра следующих 20 записей возникает ошибка:

Код

org.apache.jasper.JasperException: Exception in JSP: /Disp.jspx:26

23:     <title>Table</title>
24:   </head>
25:   <body>
26: <center>
27: <display:table name="requestScope.results.rows" id="row" pagesize="20" defaultsort="1" defaultorder="ascending" >
28:       <display:column property="VAL" />
29:       <display:column property="OBJ" title="Object" sortable="true"


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    CharsetFilter.doFilter(CharsetFilter.java:32)


root cause 

java.lang.IndexOutOfBoundsException: fromIndex = -20
    java.util.SubList.<init>(AbstractList.java:703)
    java.util.RandomAccessSubList.<init>(AbstractList.java:861)
    java.util.AbstractList.subList(AbstractList.java:570)
    org.displaytag.pagination.SmartListHelper.getListForPage(SmartListHelper.java:219)
    org.displaytag.pagination.SmartListHelper.getListForCurrentPage(SmartListHelper.java:200)
    org.displaytag.tags.TableTag.setupViewableData(TableTag.java:1525)
    org.displaytag.tags.TableTag.doEndTag(TableTag.java:1198)
    org.apache.jsp.Disp_jspx._jspService(Disp_jspx.java:133)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    CharsetFilter.doFilter(CharsetFilter.java:32)




Помогите разобраться  smile 
PM MAIL   Вверх
Enterprise
Дата 13.3.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.6.2006

Репутация: нет
Всего: 1



И еще, если вместо
Код

<c:set var="Actions" value="row.val" scope="page" />

ставлю так
Код

<c:set var="Actions" value="${row.val}" scope="page" />

либо так
Код

<c:set var="Actions" value="${pageScope.row.val}" scope="page" />

то получаю ошибку:
Код

error in DatabaseQuery servlet: Exception in JSP: /Disp.jspx:73

70:     <display:column property="TIME" />
71: 
72:     <!--c:set var="Actions" value="row.val" scope="page" /-->
73:     <c:set var="Actions" value="${pageScope.row.val}" scope="page" />
74: 
75:     <display:column title="Action" >
76: 


Stacktrace:


эту ошибку перехватывает сервлет из которого передается результат запроса.
В сервлете получаю результат и передаю его так:
Код

Statement stmt = conn.createStatement(
                            ResultSet.TYPE_SCROLL_INSENSITIVE,
                            ResultSet.CONCUR_READ_ONLY);
                stmt.execute("alter session set nls_numeric_characters='. '");
                ResultSet rs = stmt.executeQuery("SELECT * from diag");
                RowSetDynaClass resultSet = new RowSetDynaClass(rs, false);
                stmt.close();
                request.setAttribute("results", resultSet);
RequestDispatcher dispatcher;
dispatcher = request.getRequestDispatcher("Disp.jspx");
dispatcher.forward(request, response);


Что делаю не так??
PM MAIL   Вверх
Enterprise
Дата 13.3.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.6.2006

Репутация: нет
Всего: 1



Цитата(Enterprise @ 13.3.2007,  15:29)
И еще, если вместо
Код

<c:set var="Actions" value="row.val" scope="page" />

ставлю так
Код

<c:set var="Actions" value="${row.val}" scope="page" />

либо так
Код

<c:set var="Actions" value="${pageScope.row.val}" scope="page" />

то получаю ошибку:
Код

error in DatabaseQuery servlet: Exception in JSP: /Disp.jspx:73

70:     <display:column property="TIME" />
71: 
72:     <!--c:set var="Actions" value="row.val" scope="page" /-->
73:     <c:set var="Actions" value="${pageScope.row.val}" scope="page" />
74: 
75:     <display:column title="Action" >
76: 


Stacktrace:


эту ошибку перехватывает сервлет из которого передается результат запроса.
В сервлете получаю результат и передаю его так:
Код

Statement stmt = conn.createStatement(
                            ResultSet.TYPE_SCROLL_INSENSITIVE,
                            ResultSet.CONCUR_READ_ONLY);
                stmt.execute("alter session set nls_numeric_characters='. '");
                ResultSet rs = stmt.executeQuery("SELECT * from diag");
                RowSetDynaClass resultSet = new RowSetDynaClass(rs, false);
                stmt.close();
                request.setAttribute("results", resultSet);
RequestDispatcher dispatcher;
dispatcher = request.getRequestDispatcher("Disp.jspx");
dispatcher.forward(request, response);


Что делаю не так??

Изменил в сервлете класс передаваемого параметра вот так:
Код

Statement stmt = conn.createStatement(
                            ResultSet.TYPE_SCROLL_INSENSITIVE,
                            ResultSet.CONCUR_READ_ONLY);
                stmt.execute("alter session set nls_numeric_characters='. '");
                ResultSet rs = stmt.executeQuery("SELECT * from diag");
                Result resultSet= ResultSupport.toResult(rs);
                stmt.close();
                request.setAttribute("results", resultSet);
RequestDispatcher dispatcher;
dispatcher = request.getRequestDispatcher("Disp.jspx");
dispatcher.forward(request, response);


и тем самым избавился от ошибки на такой тег:
Код

<c:set var="Actions" value="${row.val}" scope="page" />


Остальные проблемы к сожалению остались  smile 
PM MAIL   Вверх
Enterprise
Дата 15.3.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 20.6.2006

Репутация: нет
Всего: 1



Неужели никто не использует displaytag?? :(
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0948 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.