2015-08-11 2 views
0

У меня есть форма с некоторыми полями, которая имеет validations(setrequired(true)). У меня также есть две кнопки отправки и отмены. Я хочу, чтобы валидации отображались при отправке и не должны показывать подтверждение об отмене. Я использовал setDefaultFormProcessing(false) для кнопки отмены. Затем он не проверяет проверку, а выводит сообщения проверки. Пожалуйста, предложите мне, как я могу прекратить их показывать. спасибо,подтверждение проверки для setDefaultFormProcessing false wicket

private void initForm() { 


final DateTextField rescheduledTdDate = new DateTextField( "rescheduledTdDate"); 
     rescheduledTdDate.add(DateValidator.minimum(calendar.getTime())).setRequired(true); 
add(rescheduledTdDate); 
final TextField rescheduledTdTime= new TextField("rescheduledTdTime"); 
      rescheduledTdTime.setRequired(true); 
      add(rescheduledTdTime); 
      // submit button 
      AjaxButton ajaxButton = new AjaxButton("submitButton") { 
       private static final long serialVersionUID = 1L; 



       @Override 
       protected void onSubmit(AjaxRequestTarget target, Form<?> form) { 
        super.onSubmit(target, form); 

        populateUpdateResult(); 

        info("Customer Saved successfully!"); 
        target.add(feedback); 
       } 

       @Override 
       protected void onError(AjaxRequestTarget target, Form<?> form) { 
        super.onError(target, form); 
        error("Save failed, retry after sometime"); 
        target.add(feedback); 
       } 
      }; 

      add(ajaxButton); 

      // cancel button and action 
      AjaxButton ajaxButton2 = new AjaxButton("cancelButton") { 

       private static final long serialVersionUID = 1L; 
       @Override 
       protected void onSubmit(AjaxRequestTarget target, Form<?> form) { 
        super.onSubmit(target, form); 
        populateUpdateCancel(); 
        info("Customer Saved successfully!"); 
        target.add(feedback); 
       } 

       @Override 
       protected void onError(AjaxRequestTarget target, Form<?> form) { 
        super.onError(target, form); 
        error("Save failed, retry after sometime"); 
        target.add(feedback); 
       } 
      }; 

      ajaxButton2.setDefaultFormProcessing(false); 
      add(ajaxButton2); 
     } 

ответ

0

Вот пример кода (аналогично вашему сценарию) работает нормально. Обратите внимание на setResponsePage (TestPage3.class) в onSubmit of Cancel (перезагрузка страницы).

Java:

public class TestPage3 extends WebPage { 

    FeedbackPanel feedbackPanel; 

    public TestPage3(final PageParameters parameters) { 

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

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

     addFormComponents(form); 
    } 

    private void addFormComponents(Form<Void> form) { 

     addNameText(form); 

     addSubmitButton(form); 

     addCancelButton(form); 
    } 

    private void addCancelButton(final Form<Void> form) { 
     AjaxButton cancelBtn = new AjaxButton("cancelBtn") { 
      @Override 
      protected void onSubmit(AjaxRequestTarget target, Form<?> form) { 
       super.onSubmit(target, form); 
       setResponsePage(TestPage3.class); 
      } 

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

     cancelBtn.setOutputMarkupId(true); 
     cancelBtn.setDefaultFormProcessing(false); 
     form.add(cancelBtn); 
    } 

    private void addSubmitButton(final Form<Void> form) { 
     AjaxButton submitBtn = new AjaxButton("submitBtn") { 
      @Override 
      protected void onSubmit(AjaxRequestTarget target, Form<?> form) { 
       super.onSubmit(target, form); 
      } 

      @Override 
      protected void onError(AjaxRequestTarget target, Form<?> form) { 
       super.onError(target, form); 
       feedbackPanel.error("Validation failed..."); 
       target.add(feedbackPanel); 
      } 
     }; 
     form.add(submitBtn); 
    } 

    private void addNameText(Form<Void> form) { 
     TextField<String> text = new TextField<String>("nameTxt"); 
     text.setOutputMarkupId(true); 
     text.setRequired(true); 

     form.add(text); 
    } 
} 

Markup:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns:wicket> 
<head> 
</head> 
<body> 
<div wicket:id="feedback"></div> 
<form wicket:id="form"> 
    <input type="text" wicket:id="nameTxt"/> 
    <input type="submit" wicket:id="submitBtn" value="Submit"/> 
    <input type="submit" wicket:id="cancelBtn" value="Cancel"/> 
</form> 
</body> 
</html> 
+0

Моя отправить абд отменить кнопки запустить два разных прок в дб. Для представления я должен дать некоторые материалы, за которые я дал валидации. Для отмены я не хочу этих входов. – shilpa

+0

PLease проверьте код выше – shilpa

+0

Удалите super.onSubmit() с кнопки «Отмена». Это кажется преступником. – Mihir