1

ページコンストラクターに次のコードがあります。

    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));

初めてページをレンダリングするとき、これは正常に機能します。しかし、DropDownChoicesのいずれかで選択を変更してフォームを送信しても、ページは変更されません(selectedAwsIdとselectedIsRealの値はそれに応じて変更されません)。フォームがどのように機能するかについての理解に欠けているものはありますか?フォームが送信されると、ページ全体が更新されますか(コンストラクターは再度実行されますか?)

4

1 に答える 1

0

モデルを構築し、これをフォームのモデルとして設定することができます。(これは私が行っていることです。) フォームを送信すると (すべてが適切にコーディングされていれば)、フォームのモデルが更新されます。

于 2012-12-20T19:29:28.950 に答える