Невозможно использовать CustomEditors весной MVC 5 - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь разработать простую форму клиента, в которой у клиента может быть несколько хобби, для чего я использовал схему отображения OneToMany в hibernate, как показано ниже, а также я создал специальный редактор для преобразования строковых значений хобби в тип CustomerHobbies. , но это просто не работает, на самом деле ничего не происходит, строковые значения хобби даже не доходят до моего специального редактора:

Customer (Entity)

@OneToMany(mappedBy="customer",cascade=CascadeType.ALL)
private List<CustomerHobbies> listOfHobbies= new ArrayList<CustomerHobbies>(); 

CustomerHobbies (Entity)

@ManyToOne
@JoinColumn(name="customerId")
private Customer customer;

Теперь, перед тем как сохранить это с помощью метода saveCustomer () в моем контроллере, я хочу преобразовать входящие значения CustomerHobbies String [] в список значений CustomerHobbies, чтобы избежать исключения java.lang.illegalStateException. Для которого я сделал код в специальном редакторе ...

public class CustomerHobbbiesEditor extends PropertyEditorSupport{

    public void setAsText(Object hobbies) throws IllegalArgumentException{
        System.out.println("Reached here");
        System.out.println("String "+hobbies);
        java.util.List<CustomerHobbies> list2= new ArrayList<CustomerHobbies>();

        for(String s: (String [])hobbies)
        {
            CustomerHobbies hobbiesObj= new CustomerHobbies();
            hobbiesObj.setCustomer_hobby(s);
            list2.add(hobbiesObj);
        }

        setValue(list2);
    }
}  

, и я использовал этот редактор в своем контроллере так:

@InitBinder
    public void initBinder(WebDataBinder dataBinder,ServletRequestDataBinder binder) {

        StringTrimmerEditor stringTrimmerEditor = new StringTrimmerEditor(true);
        dataBinder.registerCustomEditor(String.class, stringTrimmerEditor);

        dataBinder.registerCustomEditor(java.lang.String[].class, "listOfHobbies", 
        new CustomerHobbbiesEditor());  
    }

, а listOfHobbies является множественным выборомкоробка в форме jsp

<form:select path="listOfHobbies" multiple="true">
                 <c:forEach items="${hobbiesList}" var="hob" varStatus="status">
                   <option value="${hob.customer_hobby}">${hob.customer_hobby}</option>
                 </c:forEach>
</form:select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...