jQueryのポストリクエストを介してカスタムのjavascriptオブジェクト(実際にはJSONオブジェクトの配列)をスプリングコントローラに送信しようとしています。 "bla-blaと一致するエディタまたは変換方法が見つかりません"というエラーが発生し、サーバー側でエラーが発生します。文字列からサーバー側のオブジェクトに変換することはできません。 私はthisとthisの例を見つけましたが、それをまとめて動作させることはできません。 PropertyEditorのどのメソッドをオーバーライドする必要がありますか? 誰かがどの例へのリンクを知っていますか? ありがとうございます。Spring MVC一致するエディタまたはコンバート方法が見つかりませんでした
コントローラー:
private class AddressFormEditor extends PropertyEditorSupport {
protected Object convertElement(Object element)
{
String form = "";
if (element instanceof String)
form = (String) element;
Logger logger = Logger.getLogger(getClass().getName());
logger.warning(form);
return form != null ? new AddressForm(form) : null;
}
}
@InitBinder
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception
{
binder.registerCustomEditor(AddressForm.class, new AddressFormEditor());
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public ModelAndView saveUser(@ModelAttribute UserForm form, HttpServletResponse response) {...}
ユーザーフォーム:
public class UserForm extends BaseForm {
private Long id;
private String login;
private String password;
private String confirmPassword;
private String type;
private String franchise;
private String roles;
private String firstName;
private String lastName;
private String salutation;
private String position;
private String birthDate;
private String passportNumber;
private String passportIssueBy;
private String passportIssueDate;
private String passportExpireDate;
private String nationality;
private AddressForm[] addresses;
private String notes; ... }
jQueryのリクエスト:
var data = $('#userForm').serializeObject();
data.addresses = addresses;
$.ajax({
traditional: true,
type: 'POST',
url: url + 'save',
data: data,
success: function(response) {
if (response) {
initializeUser(response);
hideWait();
}
else {
showUsers();
$('#closeUserBtn').click();
}
},
error: function() {
error();
hideWait();
}
});
ロガーは、アドレスが '[オブジェクトのオブジェクト]' ですが、実際に有効な配列が送信されたと書いていますサーバーへ
多分いくつかのコードが表示されます – Ibu
問題は、私は文字列のサーバー側のオブジェクトのプロパティエディタ – nKognito