You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Daniela L <da...@gmail.com> on 2014/02/11 12:28:19 UTC

Fwd: Feedback Messages prevent DropDownChoice updating Textfields

Hi,
I am trying to implement a Feedback for every Form Component and
a catch all Feedback Panel in wicket 6.12.0. Everything works fine except
for the case
when a user causes a error which is shown in the Feedback Panel of the
Component,
e.g. the Textfield firstName is left empty. After that the select of the
DropDownChoice
does not update the Textfields anymore. Where is my mistake? Thanks a lot
in advance.
Daniela

Here is my code:

public class EditEmployeePage extends BasePage {
    private FormComponent<String> firstName;
    private DropDownChoice<Employee> employeeDDC;
    private final Form<Employee> employeListForm;
    private Model<Employee> employeeModel;
    private Employee employee;
    @SpringBean(name="employeeService")
    private EmployeeService employeeService;
    private Button saveEmployeeButton;
    private Button resetButton;

    public EditEmployeePage(final PageParameters parameters) {
        super();
        employee = new Employee();
        employeeModel = new Model<Employee>(employee);//for dropDownChoice
        final CompoundPropertyModel<Employee> employeeCpm = new
CompoundPropertyModel<Employee>(employeeModel); //for form
        employeListForm = new Form<Employee>("employeListForm",
employeeCpm);
        employeListForm.setOutputMarkupId(true);
        add(employeListForm);
        addEmployeeDropDown();
        addFirstNameTextField();
        ....//more fields
     }

    private void addEmployeeDropDown() {
        Label chooseEmployeeLabel = new Label("chooseEmployeeLabel",
"Mitarbeiter wählen:*");
        employeListForm.add(chooseEmployeeLabel);

        // Employee DropdownChoice
        LoadableDetachableModel<List<Employee>> employeeValueChoices = new
LoadableDetachableModel<List<Employee>>() {
            private static final long serialVersionUID = 1L;

            protected List<Employee> load() {
                List<Employee> employees = Collections.emptyList();
                employees = employeeService.findallEmployees(getCompany());
                if (!employees.isEmpty()){
                    employeeModel.setObject(employees.get(0));
                }
                return employees;
            }

        };

        employeeDDC = new DropDownChoice<Employee>("employee",
employeeModel,
                employeeValueChoices.getObject(),
                new TwoPropertiesChoiceRenderer<Employee>("employeeId",
"lastName", "firstName", ","));
                employeeDDC.setLabel(new Model<String>("Mitarbeiter
wählen"));
                employeeDDC.add(new
AjaxFormComponentUpdatingBehavior("onchange") {
                    @Override
                    protected void onUpdate(AjaxRequestTarget target) {
                       target.add(employeListForm);
                    }
              });

        employeeDDC.setRequired(true);
        employeListForm.add(employeeDDC);
    }

    private void addFirstNameTextField() {
        // first name label and field on page
        Label firstNameLabel = new Label("firstNameLabel", "Vorname:*");
        employeListForm.add(firstNameLabel);
        firstName = new TextField<String>("firstName");
        firstName.setLabel(new Model<String>("Vorname"));
        firstName.setOutputMarkupPlaceholderTag(true);
        FeedbackPanel firstNameFeedback =  (FeedbackPanel) new
FeedbackPanel("firstNameFeedback", firstName).setOutputMarkupId(true);
        employeListForm.add(firstNameFeedback);
        employeListForm.add(firstName);
        firstName.setRequired(true);
    }
...
}

public abstract class BasePage extends WebPage {
       private final FeedbackPanel pageFeedback = new
FeedbackPanel("feedback");
       public BasePage() {
          super();
          pageFeedback.setOutputMarkupId(true);
          add(pageFeedback);
       }