I have this code in my page constructor:
private String selectedAwsId;
private String selectedIsReal;
//these two are actually outside the constructor, and getters and setters for these two strings not shown
List<AwsCredentials> awsCredentials = (List<AwsCredentials>)getAwsCredentials();
List<String> awsIds = new ArrayList<String>();
for (AwsCredentials cred : awsCredentials){
awsIds.add(cred.getAwsId());
}
selectedAwsId = awsIds.get(0);
List<String> yesOrNo = Arrays.asList(new String[] { "sandbox", "real"});
selectedIsReal = "sandbox";
Form selectAwsCredentialsForm = new Form("selectAwsCredentialsForm"){
@Override
public void onSubmit() {
super.onSubmit();
//TODO: why isn't this updating the form?
}
};
add(selectAwsCredentialsForm);
selectAwsCredentialsForm.add(new DropDownChoice("selectAwsCredentialsDropdown", new PropertyModel(this, "selectedAwsId"), awsIds));
selectAwsCredentialsForm.add(new DropDownChoice("selectRealOrSandboxHitsDropdown", new PropertyModel(this, "selectedIsReal"), yesOrNo));
The first time I render the page, this works fine. But when I change the selection in either of the DropDownChoices and submit the form, the page doesn’t change (values in the selectedAwsId and selectedIsReal aren’t altered accordingly). Is there something I’m missing in my understanding of how forms work? Does the entire page get refreshed when a form gets submitted (does the constructor get run again?)
You might want to construct a model and set this as your form’s model. (This is what I do.) Submitting the form (and if all is coded appropriately) will then result in the form’s model being updated.