shokosブログ

プログラミング

自分のコードリファクタリング

その②のつづき
CompoundPropertyModelを使ったバージョン

public HomePage() {
	add(new FeedbackPanel("feedback"));
	ValueKeeper value = new ValueKeeper();
	Form<ValueKeeper> form = new Form<ValueKeeper>("form",new CompoundPropertyModel<ValueKeeper>(value));
	add(form);
	TextField<String> inputID = new TextField<String>("id");
	inputID.setRequired(true);
	form.add(inputID);
	PasswordTextField inputPass = new PasswordTextField("password");
	inputPass.setRequired(true);
	form.add(inputPass);
	TextField<String> inputText = new TextField<String>("text");
	inputText.setRequired(true);
	form.add(inputText);
	NextButton button = new NextButton("submit", value);
	form.add(button);
}

CompoundPropertyModelを使うと
コンポーネント
TextField inputID = new TextField("コンポーネントID",new PropertyModel(value,"プロパティ式"));
としなくても

FormでCompoundPropertyModelを使いますよーと定義すれば

TextField inputID = new TextField("コンポーネントID");
だけでおkです

ただここでコンポーネントIDはプロパティ式と同じにしないといけないといけません

CompoundPropertyModelはコンポーネントIDをプロパティ式とみなすからです
試しに違う名前にしてみたらテストが通りませんでした