Spring MVC Не найдено подходящих редакторов или стратегии конверсии. - PullRequest
1 голос
/ 24 июня 2011

Я пытаюсь отправить пользовательский объект javascript (фактически, его массив объектов JSON) через jquery post-запрос к Spring-контроллеру. Сбой на стороне сервера с ошибкой «бла-бла не найдены подходящие редакторы или стратегия конверсии». Он не может преобразовать строку в объект на стороне сервера. Я нашел это и это примеры, но я не могу собрать их вместе, чтобы это работало. Какие методы PropertyEditor я должен переопределить? Кто-нибудь знает ссылку на какой-нибудь пример? Спасибо.

Контроллер:

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) {...}

UserForm:

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

Регистратор пишет, что адреса это '[объект объекта]', но на самом деле действительный массив был отправлен на сервер

1 Ответ

3 голосов
/ 24 июня 2011

Посмотрите на редакторы в разделе org.springframework.beans.propertyeditors (в банке с пружинными бобами), который содержит встроенные редакторы, поставляемые с пружиной.

В основном вам нужно перезаписать setAsText() и getAsText(), что позволяет читать объект из строки и записывать объект как строку соответственно.

CurrencyEditor может служить очень простым примером.CustomDateEditor может послужить немного более сложным.Для примера массива посмотрите, например, ClassArrayEditor.


Однако лучший способ добиться этого - использовать технологию отображения JSON вместо самостоятельного анализа JSON;взгляните на этот пост .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...