Hi everyone.

I use Wicket 6.11.0. 

I designed my own component BaseDialog.
BaseDialog.java

/public class BaseDialog extends Panel {

        private WebMarkupContainer dialogDiv;
        private AbstractDefaultAjaxBehavior beforeOpen;
        private IndicatingAjaxButton sbt;
        private Form<Void> form;
        private FeedbackPanel fpanel;

        /**
         * 
         */
        private static final long serialVersionUID = -7300515046330284598L;

        @SuppressWarnings("serial")
        public BaseDialog(String id) {
                super(id);

                this.dialogDiv = new TransparentWebMarkupContainer("myModal");
                this.dialogDiv.setOutputMarkupId(true);
                this.dialogDiv.setMarkupId("myModal");

                this.add(dialogDiv);

                form = new Form<Void>("dlgForm");
                

                form.setOutputMarkupId(true);
                form.setMarkupId("dlgForm");

                dialogDiv.add(form);

                TransparentWebMarkupContainer ch = new 
TransparentWebMarkupContainer(
                                "childContent");
                ch.setMarkupId("childContent");
                ch.setOutputMarkupId(true);
                dialogDiv.add(ch);
                ch.add(form);

                this.sbt = new IndicatingAjaxButton("sbmtBtn", form) {
                        @Override
                        protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
                                form.success("asdasdas");
                                target.add(fpanel);
                        }

                        @Override
                        protected void onError(AjaxRequestTarget target, 
Form<?> form) {
                                form.error("error");
                                target.add(fpanel);
                        }

                };

                fpanel = new FeedbackPanel("feedback");
                fpanel.setOutputMarkupId(true);
                form.add(fpanel);

                form.setDefaultButton(this.sbt);

                this.sbt.setMarkupId("sbmtBtn");
                this.sbt.setOutputMarkupId(true);
                this.sbt.setDefaultFormProcessing(true);

                dialogDiv.add(this.sbt);
                // form.add(this.sbt);

                this.beforeOpen = new AbstractDefaultAjaxBehavior() {

                        @Override
                        protected void respond(AjaxRequestTarget target) {
                                OnBeforeOpen();
                                target.add(form);
                        }
                };

                this.add(this.beforeOpen);

        }

        public JsScope GetOpenDialogScope() {

                Map<String, Object> parameters = new HashMap<String, Object>();
                parameters.put("beforeOpenUrl", 
this.beforeOpen.getCallbackUrl());
                parameters.put("dialogId", this.dialogDiv.getMarkupId());

                return JsScope.quickScope("$.ajax({" + " async : false," + "url 
: '"
                                + this.beforeOpen.getCallbackUrl() + 
"'}).done(function() {});"
                                + "$('#" + this.dialogDiv.getMarkupId() + 
"').modal();"

                );
        }

        protected void OnBeforeOpen() {

        }

        @Override
        public void renderHead(IHeaderResponse response) {
                super.renderHead(response);
                Bootstrap.renderHead(response);
        }
}
/

BaseDialog.html 
/<html xmlns:wicket="http://wicket.apache.org";>
<body>
        <wicket:panel>
                <div wicket:id="myModal" class="modal hide fade" tabindex="-1"
                        role="dialog" aria-labelledby="myModalLabel" 
aria-hidden="true">
                        <div class="modal-header">
                                <button type="button" class="close" 
data-dismiss="modal"
                                        aria-hidden="true">X</button>
                                
Modal header

                        </div>
                        <div wicket:id="childContent" class="modal-body 
container">
                                <form wicket:id="dlgForm">
                                        <div wicket:id="feedback"></div>
                                        <wicket:child />
                                </form>
                        </div>
                        <div class="modal-footer">
                                <button class="btn" data-dismiss="modal"
aria-hidden="true">Close</button>
                                <button class="btn" wicket:id="sbmtBtn">Save 
changes</button>
                        </div>
                </div>
        </wicket:panel>
</body>
</html>/

Then I designed AddDepartmentDlg which inherits BaseDialog.

AddDepartmentDlg.java

/public class AddDepartmentDlg extends BaseDialog {

        /**
         * 
         */

        @SpringBean(name = "departmentService")
        private IDepartmentService depSrv;
        private TextField<String> name;
        private TextField<String> descr;
        private SchTree tree;


        private static final long serialVersionUID = 1L;

        public AddDepartmentDlg(String id) {
                super(id);
                
                this.name = new RequiredTextField<String>("depName");
                this.name.setMarkupId("depName");
                this.name.setOutputMarkupId(true);

                this.descr = new TextField<String>("depDescr");
                this.descr.setMarkupId("depDescr");
                this.descr.setOutputMarkupId(true);

                this.tree = new SchTree("departments", new 
DepartmentsModel(depSrv));
                tree.setMarkupId("departments");
                tree.setOutputMarkupId(true);
                this.add(this.name);
                this.add(this.descr);
                this.add(tree);
        }

        @Override
        protected void OnBeforeOpen() {
                
                this.name.modelChanged(); 
                this.descr.modelChanged(); 
        }

}
/

AddDepartmentDlg.html
/<html xmlns:wicket="http://wicket.apache.org";>
<head></head>
<body>
        <div>
                <wicket:extend>
                        <div class="row">
                                <div class="span1 ">Name:</div>
                                <div class="span5">
                                        <input wicket:id="depName" type="text" 
/>
                                </div>
                        </div>
                        <div class="row">
                                <div class="span1">Description:</div>
                                <div class="span5">
                                        <input wicket:id="depDescr" type="text" 
/>
                                </div>
                        </div>
                        <div class="row">
                                <div class="span1">Parent Department:</div>
                                <div class="span4">
                                        <div style="border: 1px solid #888; 
border-radius: 3px;">
                                                <div wicket:id="departments"
                                                        style="height: 150px; 
overflow: auto;"></div>
                                        </div>
                                </div>
                        </div>
        </wicket:extend>
        </div>
</body>
</html>
/

When I Put AddDepartmentDlg on my page and show this dialog, wicket calls
AbstractDefaultAjaxBehavior "beforeOpen" in the BaseDialog component. In
this call I wold like to reset all filelds and components which are
surrounded by wicket:form  tag. 

But it does not happen.
What I have to do in oreder to get all needed fields reseted?

And second question.
One of the fields surrounded by the wicket:form tag is
RequiredTextField<String>("depName");
Even if I leave this field empty and press AjaxSubmitButton validation does
not happen and OnSubmit Method of AjaxSubmitButton is called , but as I have
understood some validation should have place and OnError method of
AjaxSubmitButton should be called.

Thanks in advance. 





--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Wicket-6-reset-Form-fields-tp4662358.html
Sent from the Users forum mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to