2014-02-04 4 views
0

Я новичок, и с помощью Spring 3.Spring 3 связывание с примитивным типом данных

Я следующий фасолью

public class Record { 
    private String title; 
    private double amount; 

    //Getter and Setter 
} 

public class RecordBean { 
    private List<Record> records; 

    public RecordBean() { 
     this.records = LazyList.lazyList(new ArrayList<Record>(), new InstantiateFactory<Record>(Record.class)); 
    } 

    //Getter and Setter 
} 

я добавил RecordBean к model

modelMap.add('recordBean',new RecordBean()); 

Ниже приводится Весна Форма

<form:form action="/save" method="POST" commandName="recordBean"> 

    <form:input path="records[0].title"/> 
    <form:input path="records[0].amount"/> 

    <form:input path="records[1].title"/> 
    <form:input path="records[1].amount"/> 

    <input type="submit" value="Save"/> 
</form:form> 

Я также добавил InitBinder контролеру

@InitBinder 
public void initBinder(WebDataBinder binder) { 
    binder.registerCustomEditor(Double.class, new CustomNumberEditor(Double.class, true)); 
} 

Теперь, если я введите значение для amount[0] и оставьте пустым для amount[1] и отправить форму, я получаю сообщение об ошибке typeMismatch.

Field error in object 'recordBean' on field 'records[1].amount': rejected value []; codes [typeMismatch.recordBean.records[1].amount,typeMismatch.recordBean.records.amount,typeMismatch.records[1].amount,typeMismatch.records.amount,typeMismatch.amount,typeMismatch.double,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [recordBean.records[1].amount,records[1].amount]; arguments []; default message [records[1].amount]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'double' for property 'records[1].amount'; nested exception is java.lang.NumberFormatException: empty String] 

Просьба сообщить.

Благодаря

ответ

1

Может быть, попробуйте изменить из: «двойной» на «Двойной» для этой линии:

private double amount; 
+0

Да я подозреваю, что 'CustomNumberEditor' не вступают в силу - потому что он зарегистрирован против wrapper type 'Double ', но Spring пытается привязать к примитивному типу' double '. –

+0

Что делать, если я хочу связать его только с примитивным типом, а не с классом-оболочкой? –

+0

Эта работа работает, но я хочу использовать примитивный тип данных. Пожалуйста, направляйте. –

Смежные вопросы