So as some of you may know I've been updating the Grails Wicket plug-in. There is quite a few users on the Grails list who have shown interest in it and the ability to use a component framework backed onto the rest of the Grails stack (GORM, transactional services, plugin system etc.)
However, the plugin provides a very basic level of integration and I was thinking it would be nice to create a Groovy DSL for Wicket. I looked into the WicketBuilder, but really I think we can take this further. So based on the example here: http://www.theserverside.com/tt/articles/article.tss?l=IntroducingApacheWicket I came up with the below syntax to represent this application (note i havent actually implemented anything yet this is just a syntax proposal). Thoughts/feedback/suggestions welcome: class BasePage extends BuildablePage { public build() { stylesheet "main" panel "searchPanel" { form "searchForm" { def model = [:] bookmarkablePageLink "addContact", EditContact textField "searchString", model:model onSubmit { redirect page:ListContacts, [searchString: model.searchString] } } } } } class ListContacts extends BasePage { public build() { super.build(); def contactsModel = { Contact.findByNameLike("%${params.searchString}%") } as LoadableDetachableModel listView "contacts", contactsModel { item -> def view = link( "view", item.model ) { onClick { redirect page:new ViewContact(item.model.id) } } view << label("firstName", new PropertyModel(item.model, "firstName")) view << label("lastName", new PropertyModel(item.model, "lastName")) item << view item << link("edit", item.model) { onClick { redirect page:new EditContact(model.id) } } item << link("delete", item.model) { onClick { item.model.delete() redirect page:ListContacts } } } } } -- View this message in context: http://www.nabble.com/Feedback-on-proposed-Groovy-DSL-syntax-for-Wicket-tp15873183p15873183.html Sent from the Wicket - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]