Новичок
Профиль
Группа: Участник
Сообщений: 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, чтобы воспользоватся постраничным разбиением из программы-примера?
|