When form is submitted, wicket performs a request which looks something like
this:
"?wicket:interface=:0:body:panel:IFormSubmitListener::". This ensures that
the onSubmit method is called. But what you did with your example, is wrong,
because your request is not a normal wicket request:
$.post("demo", "message=[" + data.toSource() + "];", receiveForm, "json");
That is why, your onSubmit method will never be called.
I don't understand, why are you trying to do something simple, in such a
complicated way. I recommend you, to have a look at examples in order to
learn thinking in wicket way and understand basic principles.
Alex.
Pen wrote:
>
> Greetings,
>
> I want to know how to handle the Jquery, JSon data in the wicket. What is
> the best way to do it.
> I have created simple form which sends the json data across to server and
> replies back to the form.
> I am not sure how to handle the request and response in wicket. I am using
> Json-lib 2.1 for jdk1.5
> Can anybody analyze the below program and suggest me what is wrong.
>
> demo.html
> <head>
> <script src="scripts/jquery-1.2.1.js" type="text/javascript"
> charset="utf-8"></script>
> <script type="text/javascript" charset="utf-8">
> $(document).ready(function() {
> $("#testForm").submit(sendForm);
> });
>
> function sendForm(e) {
> e.preventDefault();
> var data = {
> field1: $("#field1").val(),
> field2: $("#field2").val(),
> field3: $("#field3").val(),
> };
>
> $("#sent .content").html(data.toSource());
> $.post("demo", "message=[" + data.toSource() + "];",
> receiveForm,
> "json");
> };
>
> function receiveForm(data) {
> $("#field1").val(data.field1);
> $("#field2").val(data.field2);
> $("#field3").val(data.field3);
>
> $("#received .content").html(data.toSource());
> };
> </script>
>
> </head>
> <body>
>
> <form wicket:id="testForm" >
> <h1 id="form">Form</h1>
>
> <label for="field1">Field One:</label>
> <input type="text" id="field1" />
>
> <label for="field2">Field Two:</label>
> <input type="text" id="field2" />
>
> <label for="field3">Field Three:</label>
> <input type="text" id="field3" />
>
> <input type="submit" id="submitter" value="Post the data" />
> </form>
>
> <div id="sent" class="readout">
> <h1 id="sent_data:">Sent Data:</h1>
> <div class="content">
>
> </div>
> </div>
> <div id="received" class="readout">
>
> <h1 id="received_data">Received Data:</h1>
> <div class="content">
>
> </div>
> </div>
> </body>
> </html>
>
> Here is the wicket program to handle this
>
> demo.java
> public class Demo extends BasePage {
> public Demo() {
>
> Form form = new Form("testForm",new
> CompoundPropertyModel(this));
> add(form);
> form.add(new AjaxFormSubmitBehavior(form,"onsubmit"){
> private static final long serialVersionUID = 1L;
>
>
> protected void onSubmit(AjaxRequestTarget target) {
> Request request = getRequest();
> String data = request.getParameter("data");
>
> try {
> JSONObject jsonData = new JSONObject();
> JSONObject selectedNode =
> jsonData.getJSONObject(data);
> } catch (Exception e) {
> throw new RuntimeException("Failed to
> parse selected node from reply:
> " + data);
> }
> //target.addComponent(received)// Add to the
> response data
> }
> });
> }
> }
>
>
> ~Pen
>
--
View this message in context:
http://www.nabble.com/howto-JSON-Wicket-works--tf4865188.html#a13967492
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]