I am having problems with a plugin with grails plugins. I created a new project and copied the sample code for the plugin. There is a book class that looks like a list and a template for a table. It is assumed that pagination should only update data in the 'filterList' div, but instead the page only refreshes with the layout view _filtered.gsp. Below is the code:
Controller:
class BookController { def scaffold = true def list = { [bookInstanceList: Book.list(max:10,offset: 0), bookInstanceTotal: Book.count()] } def filter = { params.max = Math.min(params.max ? params.int('max') : 10, 100) render(template: 'filter', model: [bookInstanceList: Book.list(params), bookInstanceTotal: Book.count()]) }
}
list.gsp - view:
<%@ page import="com.intelligrape.Book" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta name="layout" content="main"/> <g:set var="entityName" value="${message(code: 'book.label', default: 'Book')}"/> <title><g:message code="default.list.label" args="[entityName]"/></title> </head> <body> <div class="nav"> <span class="menuButton"><a class="home" href="${createLink(uri: '/')}"><g:message code="default.home.label"/></a> </span> <span class="menuButton"><g:link class="create" action="create"><g:message code="default.new.label" args="[entityName]"/></g:link></span> </div> <div class="body"> <h1><g:message code="default.list.label" args="[entityName]"/></h1> <g:if test="${flash.message}"> <div class="message">${flash.message}</div> </g:if> <div id="filteredList"> <g:render template="filter"/> </div> </div> </body> </html>
_filtered.gsp - template for a table of books
<div> <div class="list"> <table> <thead> <tr> <util:remoteSortableColumn property="id" title="${message(code: 'book.id.label', default: 'Id')}" update="filteredList" action="filter"/> <util:remoteSortableColumn property="author" title="${message(code: 'book.author.label', default: 'Author')}" update="filteredList" action="filter"/> <util:remoteSortableColumn property="name" title="${message(code: 'book.name.label', default: 'Name')}" update="filteredList" action="filter" max="5"/> <util:remoteSortableColumn property="price" title="${message(code: 'book.price.label', default: 'Price')}" update="filteredList" action="filter"/> </tr> </thead> <tbody> <g:each in="${bookInstanceList}" status="i" var="bookInstance"> <tr class="${(i % 2) == 0 ? 'odd' : 'even'}"> <td><g:link action="show" id="${bookInstance.id}">${fieldValue(bean: bookInstance, field: "id")}</g:link></td> <td>${fieldValue(bean: bookInstance, field: "author")}</td> <td>${fieldValue(bean: bookInstance, field: "name")}</td> <td>${fieldValue(bean: bookInstance, field: "price")}</td> </tr> </g:each> </tbody> </table> </div> <div class="paginateButtons"> <util:remotePaginate total="${bookInstanceTotal}" update="filteredList" action="filter" pageSizes="[5: '5 on Page',10:'10 on Page',15:'15 on Page']" max="5" /> </div> </div>
source share