Index: D:/Docomo/Workspace/teeda/teeda-core/src/main/java/org/seasar/teeda/core/webapp/TeedaInitializer.java =================================================================== --- D:/Docomo/Workspace/teeda/teeda-core/src/main/java/org/seasar/teeda/core/webapp/TeedaInitializer.java (revision 4176) +++ D:/Docomo/Workspace/teeda/teeda-core/src/main/java/org/seasar/teeda/core/webapp/TeedaInitializer.java (working copy) @@ -137,6 +137,12 @@ FacesConfigOptions.setDefaultGridAsync(Boolean.valueOf( defaultGridAsync).booleanValue()); } + final String gridFirstRenderRowCount = getInitParameter(servletContext, + InternalConstants.GRID_FIRST_RENDER_ROW_COUNT); + if (gridFirstRenderRowCount != null) { + FacesConfigOptions.setGridFirstRenderRowCount( + Integer.parseInt(gridFirstRenderRowCount)); + } final String defaultLayoutPath = getInitParameter(servletContext, InternalConstants.DEFAULT_LAYOUT_PATH); if (defaultLayoutPath != null) { Index: D:/Docomo/Workspace/teeda/teeda-core/src/main/java/javax/faces/internal/InternalConstants.java =================================================================== --- D:/Docomo/Workspace/teeda/teeda-core/src/main/java/javax/faces/internal/InternalConstants.java (revision 4176) +++ D:/Docomo/Workspace/teeda/teeda-core/src/main/java/javax/faces/internal/InternalConstants.java (working copy) @@ -35,6 +35,8 @@ String DEFAULT_GRID_ASYNC = "teeda.DEFAULT_GRID_ASYNC"; + String GRID_FIRST_RENDER_ROW_COUNT = "teeda.GRID_FIRST_RENDER_ROW_COUNT"; + String DEFAULT_LAYOUT_PATH = "teeda.DEFAULT_LAYOUT_PATH"; Object[] EMPTY_ARGS = new Object[0]; Index: D:/Docomo/Workspace/teeda/teeda-core/src/main/java/javax/faces/internal/FacesConfigOptions.java =================================================================== --- D:/Docomo/Workspace/teeda/teeda-core/src/main/java/javax/faces/internal/FacesConfigOptions.java (revision 4176) +++ D:/Docomo/Workspace/teeda/teeda-core/src/main/java/javax/faces/internal/FacesConfigOptions.java (working copy) @@ -37,6 +37,8 @@ private static boolean defaultGridAsync = true; + private static int gridFirstRenderRowCount = 50; + private static final String DEFAULT_LAYOUT_PATH = "/layout/layout.html"; private static String defaultLayoutPath = DEFAULT_LAYOUT_PATH; @@ -102,6 +104,14 @@ FacesConfigOptions.defaultGridAsync = defaultGridAsync; } + public static int getGridFirstRenderRowCount() { + return gridFirstRenderRowCount; + } + + public static void setGridFirstRenderRowCount(int gridFirstRenderRowCount) { + FacesConfigOptions.gridFirstRenderRowCount = gridFirstRenderRowCount; + } + public static String getDefaultLayoutPath() { return defaultLayoutPath; } @@ -126,6 +136,7 @@ javascriptNotPermittedPath = null; compressState = false; defaultGridAsync = true; + gridFirstRenderRowCount = 50; defaultLayoutPath = DEFAULT_LAYOUT_PATH; redirectUrl = null; } Index: D:/Docomo/Workspace/teeda/teeda-extension/src/test/java/org/seasar/teeda/extension/render/html/THtmlGridRendererTest.java =================================================================== --- D:/Docomo/Workspace/teeda/teeda-extension/src/test/java/org/seasar/teeda/extension/render/html/THtmlGridRendererTest.java (revision 4176) +++ D:/Docomo/Workspace/teeda/teeda-extension/src/test/java/org/seasar/teeda/extension/render/html/THtmlGridRendererTest.java (working copy) @@ -21,6 +21,7 @@ import javax.faces.component.UIComponent; import javax.faces.el.ValueBinding; +import javax.faces.internal.FacesConfigOptions; import javax.faces.render.Renderer; import javax.faces.render.RendererTest; import javax.xml.parsers.ParserConfigurationException; @@ -887,6 +888,7 @@ public void no_testMany() throws Exception { // ## Arrange ## final int itemSize = 6000; + int orgSize = FacesConfigOptions.getGridFirstRenderRowCount(); renderer.setFirstRenderRowCount(itemSize); htmlGrid.setId("someGridXY"); htmlGrid.setWidth(String.valueOf(170)); @@ -904,6 +906,7 @@ final byte[] bytes = getResponseText().getBytes("UTF-8"); final int bytesLen = bytes.length; System.out.println(bytesLen + "バイト (" + bytesLen / 1024 + "K)"); + renderer.setFirstRenderRowCount(orgSize); } protected Renderer createRenderer() { Index: D:/Docomo/Workspace/teeda/teeda-extension/src/main/java/org/seasar/teeda/extension/render/html/THtmlGridRenderer.java =================================================================== --- D:/Docomo/Workspace/teeda/teeda-extension/src/main/java/org/seasar/teeda/extension/render/html/THtmlGridRenderer.java (revision 4176) +++ D:/Docomo/Workspace/teeda/teeda-extension/src/main/java/org/seasar/teeda/extension/render/html/THtmlGridRenderer.java (working copy) @@ -27,6 +27,7 @@ import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.context.ResponseWriter; +import javax.faces.internal.FacesConfigOptions; import javax.faces.internal.IgnoreAttribute; import org.seasar.framework.beans.BeanDesc; @@ -108,8 +109,6 @@ private static final String GRID_ATTRIBUTE = THtmlGrid.class.getName() + ".GRID_ATTRIBUTE"; - private int firstRenderRowCount = 50; - private final IgnoreAttribute thIgnoreAttribute = new IgnoreAttribute(); { thIgnoreAttribute.addAttributeName(JsfConstants.ID_ATTR); @@ -519,9 +518,17 @@ final BeanDesc beanDesc = BeanDescFactory.getBeanDesc(page.getClass()); final Object[] items = htmlGrid.getItems(context); // TEEDA-150 - final int rowSize = Math.min(firstRenderRowCount, - ((items != null) ? items.length : 0)); + final int rowSize; + int firstRenderRowCount = FacesConfigOptions.getGridFirstRenderRowCount(); + + if (firstRenderRowCount > 0) { + rowSize = Math.min(firstRenderRowCount, + ((items != null) ? items.length : 0)); + } else { + rowSize = (items != null) ? items.length : 0; + } + final String id = getIdForRender(context, htmlGrid); // https://www.seasar.org/issues/browse/TEEDA-176 GridRowContext rowContext = null; @@ -902,7 +909,7 @@ } public void setFirstRenderRowCount(final int firstRenderRowCount) { - this.firstRenderRowCount = firstRenderRowCount; + FacesConfigOptions.setGridFirstRenderRowCount(firstRenderRowCount); } private static class GridAttribute implements Serializable {