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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Постраничный вывод таблицы MS SQL, паджинация на основе примера 
:(
    Опции темы
Legio
Дата 2.2.2016, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день. Имеется вот такое обращение к базе данных в web-приложении на java -

    
Код


package com.corejsf;
     
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    import javax.annotation.Resource;
    import javax.inject.Named; 
       // or import javax.faces.bean.ManagedBean;
    import javax.enterprise.context.RequestScoped; 
       // or import javax.faces.bean.RequestScoped;
    import javax.sql.DataSource;
    import javax.sql.rowset.CachedRowSet;
     
    @Named // or @ManagedBean
    @RequestScoped
    public class CustomerBean {
       @Resource(name="jdbc/mydb")
       private DataSource ds;
       
       public ResultSet getAll() throws SQLException {
          Connection conn = ds.getConnection();
          try {
             Statement stmt = conn.createStatement();        
             ResultSet result = stmt.executeQuery("SELECT * FROM Customers");         
             // return ResultSupport.toResult(result);
             CachedRowSet crs = new com.sun.rowset.CachedRowSetImpl();         
                // or use an implementation from your database vendor
             crs.populate(result);
             return crs;
          } finally {
             conn.close();
          }
       }
    }




Также, имеется вот такая работающая программа, выполняющая постраничный вывод данных -

    
Код

<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:corejsf="http://corejsf.com">
       <h:head>
          <h:outputStylesheet library="css" name="styles.css"/>   
          <title>Pager Test</title>
       </h:head>
       <h:body>
          <ui:debug/>
          <h:form>
             <h:dataTable id="timezones" value="#{tz.data}" var="row" rows="10">
                <h:column>#{row}</h:column>
             </h:dataTable>
             <corejsf:pager dataTableId="timezones" showpages="20"
                            selectedStyleClass="currentPage"/>
          </h:form>
       </h:body>
    </html>



   
Код

package com.corejsf;
     
    import java.io.IOException;
    import java.util.Map;
    import javax.faces.component.UIComponent;
    import javax.faces.component.UIData;
    import javax.faces.component.UIForm;
    import javax.faces.context.FacesContext;
    import javax.faces.context.ResponseWriter;
    import javax.faces.render.FacesRenderer;
    import javax.faces.render.Renderer;
     
    @FacesRenderer(componentFamily="javax.faces.Command",
       rendererType="com.corejsf.Pager")
    public class PagerRenderer extends Renderer {
       public void encodeBegin(FacesContext context, UIComponent component) 
          throws IOException {   
          String id = component.getClientId(context);
          UIComponent parent = component;
          while (!(parent instanceof UIForm)) parent = parent.getParent();
          String formId = parent.getClientId(context);
     
          ResponseWriter writer = context.getResponseWriter();    
     
          String styleClass = (String) component.getAttributes().get("styleClass");
          String selectedStyleClass 
             = (String) component.getAttributes().get("selectedStyleClass");
          String dataTableId = (String) component.getAttributes().get("dataTableId");
          int showpages = toInt(component.getAttributes().get("showpages"));      
     
          // find the component with the given ID
     
          UIData data = (UIData) component.findComponent(dataTableId);
     
          int first = data.getFirst();
          int itemcount = data.getRowCount();
          int pagesize = data.getRows(); 
          if (pagesize <= 0) pagesize = itemcount;
     
          int pages = itemcount / pagesize;
          if (itemcount % pagesize != 0) pages++;
     
          int currentPage = first / pagesize;
          if (first >= itemcount - pagesize) currentPage = pages - 1;
          int startPage = 0;
          int endPage = pages;
          if (showpages > 0) { 
             startPage = (currentPage / showpages) * showpages;
             endPage = Math.min(startPage + showpages, pages);
          }
          if (currentPage > 0)
             writeLink(writer, component, formId, id, "<", styleClass);
          
          if (startPage > 0)  
             writeLink(writer, component, formId, id, "<<", styleClass);
     
          for (int i = startPage; i < endPage; i++) {
             writeLink(writer, component, formId, id, "" + (i + 1), 
                i == currentPage ? selectedStyleClass : styleClass);
          }
     
          if (endPage < pages) 
             writeLink(writer, component, formId, id, ">>", styleClass);
     
          if (first < itemcount - pagesize)
             writeLink(writer, component, formId, id, ">", styleClass);
     
          // hidden field to hold result
          writeHiddenField(writer, component, id);
       }
       
       private void writeLink(ResponseWriter writer, UIComponent component, 
          String formId, String id, String value, String styleClass) 
          throws IOException {
          writer.writeText(" ", null);
          writer.startElement("a", component);
          writer.writeAttribute("href", "#", null);
          writer.writeAttribute("onclick", onclickCode(formId, id, value), null);
          if (styleClass != null) 
             writer.writeAttribute("class", styleClass, "styleClass");
          writer.writeText(value, null);
          writer.endElement("a");
       }
     
       private String onclickCode(String formId, String id, String value) {
          return new StringBuilder().append("document.forms['")
             .append(formId).append("']['")
             .append(id).append("'].value='").append(value).append("'; document.forms['")
             .append(formId).append("'].submit(); return false;").toString();      
       }
     
       private void writeHiddenField(ResponseWriter writer, UIComponent component, 
          String id) throws IOException {
          writer.startElement("input", component);
          writer.writeAttribute("type", "hidden", null);
          writer.writeAttribute("name", id, null);
          writer.endElement("input");
       }
     
       public void decode(FacesContext context, UIComponent component) {
          String id = component.getClientId(context);
          Map<String, String> parameters 
             = context.getExternalContext().getRequestParameterMap();
     
          String response = (String) parameters.get(id);
          if (response == null || response.equals("")) return; 
     
          String dataTableId = (String) component.getAttributes().get("dataTableId");
          int showpages = toInt(component.getAttributes().get("showpages"));      
     
          UIData data = (UIData) component.findComponent(dataTableId);
     
          int first = data.getFirst();
          int itemcount = data.getRowCount();
          int pagesize = data.getRows(); 
          if (pagesize <= 0) pagesize = itemcount;
     
          if (response.equals("<")) first -= pagesize;
          else if (response.equals(">")) first += pagesize;
          else if (response.equals("<<")) first -= pagesize * showpages;
          else if (response.equals(">>")) first += pagesize * showpages;
          else {
             int page = Integer.parseInt(response);
             first = (page - 1) * pagesize;
          }
          if (first + pagesize > itemcount) first = itemcount - pagesize; 
          if (first < 0) first = 0;
          data.setFirst(first);
       }
     
       private static int toInt(Object value) {
          if (value == null) return 0;
          if (value instanceof Number) return ((Number) value).intValue();
          if (value instanceof String) return Integer.parseInt((String) value);
          throw new IllegalArgumentException("Cannot convert " + value);
       }   
    }
 


   
Код

 package com.corejsf;
     
    import javax.inject.Named; 
       // or import javax.faces.bean.ManagedBean;
    import javax.enterprise.context.RequestScoped; 
       // or import javax.faces.bean.RequestScoped;
     
    @Named("tz") // or @ManagedBean(name="tz")
    @RequestScoped
    public class TimeZoneBean {
       private String[] data = java.util.TimeZone.getAvailableIDs();
       public String[] getData() { return data; }
    }




Как мне надо изменить запрос мой запрос данных из базы данных из базы MS SQL, чтобы воспользоватся постраничным разбиением из программы-примера?
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.0398 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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