私は以前に別のページから選択したオブジェクトをその編集フォームに表示します。選択ページは、選択したオブジェクトのIDをGET経由でコントローラに送信します。Spring MVCはGETリクエストでオブジェクトをサブミットしてバインドします
パラメータはメッセージオブジェクトにバインドされ、プロパティエディタを使用して自動的に初期化されるように強制することはできますか?
現時点では、常にidプロパティが設定された新しいオブジェクトを取得しますが、プロパティエディタでは初期化されません。私のGETリクエストには何が欠けていますか?
<a href="message?id=${message.id}">${message.title}</a>
なPropertyEditorクラスとInitBind方法で私のコントローラ
@Controller
public class MessageController {
@Autowired
private MessageRepository messageRepository;
@RequestMapping(value="/message", method = RequestMethod.GET)
public String handleMessage(Model model,@ModelAttribute("message") Message message) {
// ISSUE Here the message object has only the "id" property set but get not initialized through the binder
System.out.println(message);
return "message";
}
// inline property editor for message class
public class MessagePropertyEditor extends PropertyEditorSupport {
@Override
public String getAsText() {
return String.valueOf(((Message) getValue()).getId());
}
@Override
public void setAsText(String id) throws IllegalArgumentException {
Message message = messageRepository.getMessageById(Integer.valueOf(id));
setValue(message);
}
}
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Message.class, new MessagePropertyEditor());
}
}
例メッセージBeanクラス
:私のコントローラにGETリクエストを経由してIDを送信します例の選択JSPページ、
public class Message {
private int id;
private String title;
private String text;
// getter & setter methods
}
'=' RequestParam' @。 –