See http://refactor.com.au/blog/grails-amazon-s3-plugin-063-released
Thursday, July 16, 2009
Saturday, June 13, 2009
Adding pagination to a Grails WebFlow state
I noticed a few unanswered questions relating to paginating a WebFlow state on the users mailing list and thought I'd post the solution I came up with for a Refactor project I was working on last week.
It basically involves splitting the behaviour into an action and a view state with a transition between them called 'paginate'
Then in the view all we need to do is to pass the current page from the flow scope to the paginate tag. The paginate tag also contains an extra parameter in order to trigger the paginate event when the generated links are clicked.
I haven't tried messing with all the options for g:paginate to make sure they still work so please let me know if you find any problems with the above code.
It basically involves splitting the behaviour into an action and a view state with a transition between them called 'paginate'
loadResults { action { def criteria = MyDomain.createCriteria(){ eq('someField','someval') } flow.myDomainResults = criteria.list([max: 9, offset: flow.myDomainOffset ?: 0]) flow.totalMyDomains = flow.myDomainResults.totalCount return success() } on('success').to('browse') on(Exception).to "handleError" } browse { on('paginate') { flow.myDomainOffset = params.offset }.to('loadResults') on('selectItem').to('someOtherState') //... }One point to note is that I use a criteria in order to get the totalCount property populated for me automatically so that I don't have to run a separate query. Also, the above only works if your domain class is Serializable, in my real application this wasn't the case so I stored a list of maps containing the properties I wanted to display instead of the list of domain objects.
Then in the view all we need to do is to pass the current page from the flow scope to the paginate tag. The paginate tag also contains an extra parameter in order to trigger the paginate event when the generated links are clicked.
<g:each in="${myDomainResults}" status="i" var="myDomain"> <g:form action="myFlow"> <input name="id" value="${myDomain.id}" type="hidden"> URL: ${myDomain.url} <g:submitbutton name="selectItem" value="Select"/> </g:form> </g:each> <div class="paginateButtons"> <g:paginate max="9" offset="${myDomainOffset}" total="${totalMyDomains}" params="${[_eventId_paginate:true]}" /> </div>You can also see I render each item as a separate form with a hidden id field and a submit button to trigger the 'selectItem' event and move onto the next state.
I haven't tried messing with all the options for g:paginate to make sure they still work so please let me know if you find any problems with the above code.
Thursday, June 11, 2009
Thursday, May 21, 2009
Grails JSR-186 Portlets Plugin Released
Kenji Nakamura has taken the reins of my initial work on the Grails Portlets plugin and done an awesome job of refactoring it into more manageable sub-plugins.
You can now plug-in portal implementations with Pluto and Liferay supported initially.
JSR-286 will be supported when the underlying version of Spring used by Grails is updated to Spring 3.0.
Check it out at the Grails plugin portal.
Great work Kenji!
You can now plug-in portal implementations with Pluto and Liferay supported initially.
JSR-286 will be supported when the underlying version of Spring used by Grails is updated to Spring 3.0.
Check it out at the Grails plugin portal.
Great work Kenji!
Wednesday, May 6, 2009
Grails Amazon S3 Plugin 0.5 Released
The latest version of the Amazon S3 plugin has been released which incorporates the latest jets3t snapshot library (0.7.1-SNAPSHOT) which has improved compatibility with the Eucalyptus open source EC2/S3 clone and some bug fixes.
The plugin S3 event handling code was also updated to avoid stale object and optimistic locking exceptions being thrown by Hibernate.
The plugin S3 event handling code was also updated to avoid stale object and optimistic locking exceptions being thrown by Hibernate.
Thursday, April 30, 2009
WebTest Plugin 1.1.4.2 Released
A new minor release of the Grails WebTest plugin to allow the plugin to download the latest WebTest snapshot (which uses HtmlUnit 2.5 which fixes issues with testing JQuery 1.3.2).
It will download the latest snapshot by default when installed. If you would prefer the latest stable release (3.0) you can answer no when prompted.
It will download the latest snapshot by default when installed. If you would prefer the latest stable release (3.0) you can answer no when prompted.
Testing a JQuery-UI Drag and Drop using WebTest
Just a quick post regarding using WebTest with JQuery-UI Draggable and Droppable.
The way that WebTest performs a drag and drop is as follows:
What this means is that you need to configure your Draggable to start dragging on mousedown without delay. You can do this by setting the distance and delay options to zero (delay is zero by default):
The way that WebTest performs a drag and drop is as follows:
from.mouseDown() to.mouseOver() to.mouseUp()Note that there is no intermediate move events between mouse down on the thing you're dragging and mousing over the target element.
What this means is that you need to configure your Draggable to start dragging on mousedown without delay. You can do this by setting the distance and delay options to zero (delay is zero by default):
$('.block').draggable({distance:0});WebTest will now be able to click and drag it correctly. Unfortunately due to HtmlUnits 'renderless' behaviour you cannot specify exactly where you want to drop it so if you require precise targeting to properly test your application you're out of luck.
Subscribe to:
Posts (Atom)