If you subclass StatelessForm instead of Form , this will take you part of the path. Instead of having something like
action = "MyApp / Gate: interface =: 1: eventEditor :: IFormSubmitListener ::"
with the page containing the form mounted at the URL available for bookmarking, you will get something like, for example,
action = "MyApp / mount / path / some / Titles / Wicket: interface =: 0: eventEditor :: IFormSubmitListener ::"
It uses MixedParamUrlCodingStrategy to mount in WebApplication.init()
You can then override encodeUrlInHiddenFields() to return true , which will give you a clean URL in the action attribute.
However, all this does not change the way Wicket works with forms, i.e. for example, you still have some Wicket-specific status data in client markup. I think this is so difficult, I suppose, is that Wicket is designed to help you create a status-based web application. I noticed that Wicket does a lot of things (for example, comparing the submitted form values ββwith what is returned by the model before the setters are called) backstage that I know too little to be convenient when I just cut it out.
You can use Wicket to provide RESTful web services, though, as stated in this blog post . There is also a project in Google code called wicket-rest that expands on this idea. Note that this works as simple as that because it never uses the entire component to create a component-based user interface.
The guy who wrote this post had another problem, but it helped me understand that the Wicket form is a little better anyway.
source share