как сохранить двойное значение от jsp до пружины mvc контроллера - PullRequest
0 голосов
/ 07 мая 2020

Вот моя JSP страница:

    <c:url var="productSave" value="/admin/products/emi.html" />
    <form:form method="Post" action="${productSave}"
    modelAttribute="intrest">
    <table>
        <tr>
            <td>Id :</td>
            <td><form:input path="financerId" /></td>
        </tr>
        <tr>
            <td>downpayment :</td>
            <td><form:input path="downpayment" /></td>
        </tr>
        <tr>
            <td>months :</td>
            <td><form:input path="months" /></td>
        </tr>
        <tr>
            <td>intrest :</td>
            <td><form:input  path="intrest" /></td>
        </tr>
        <tr>
            <td></td>
            <td><input onclick="self.close()" type="submit" value="Save" /></td>
        </tr>
    </table>
    </form:form>    

Здесь я использую поле intrest как double в компоненте модели. но когда я пытаюсь сохранить объект, он выдает

Failed to convert value of type 'java.lang.String' to required type 'com.salesmanager.core.model.catalog.product.relationship.FinancerRateofIntrest'; nested exception is org.springframework.core.convert.ConversionFailedException

Контроллер:

@RequestMapping(value = "/admin/products/emi.html", method = RequestMethod.POST)
public String GetEmiOption(@Valid @ModelAttribute("intrest") FinancerRateofIntrest intrest, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
        rateofintrest.save(intrest);
        return "admin-products-emi";
}

Класс объекта:

@Entity
@Table(name = "FinancerRateofIntrest", schema = SchemaConstant.SALESMANAGER_SCHEMA)
public class FinancerRateofIntrest extends SalesManagerEntity<Long, FinancerRateofIntrest> {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "ID", unique = true, nullable = false)
    @TableGenerator(name = "TABLE_GEN", table = "SM_SEQUENCER", pkColumnName = "SEQ_NAME", valueColumnName = "SEQ_COUNT", pkColumnValue = "PRODUCT_RELATION_SEQ_NEXT_VAL")
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "TABLE_GEN")
    private Long id;
    private int financerId;
    private String downpayment;
    private String months;
    private Double intrest;





    public Double getIntrest() {
        return intrest;
    }

    public void setIntrest(Double intrest) {
        this.intrest = intrest;
    }

    public Long getId() {

        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public int getFinancerId() {
        return financerId;
    }

    public void setFinancerId(int financerId) {
        this.financerId = financerId;
    }

    public String getDownpayment() {
        return downpayment;
    }

    public void setDownpayment(String downpayment) {
        this.downpayment = downpayment;
    }

    public String getMonths() {
        return months;
    }

    public void setMonths(String months) {
        this.months = months;
    }

}

1 Ответ

0 голосов
/ 07 мая 2020

Вы используете одно и то же имя для объекта и переменной внутри него. Измените имя переменной modelAttribute с intrest на что-то другое, например financerRateofIntrest в:

<form:form method="Post" action="${productSave}" modelAttribute="financerRateofIntrest"> 

и

@RequestMapping(value = "/admin/products/emi.html", method = RequestMethod.POST)
public String GetEmiOption(@Valid @ModelAttribute("financerRateofIntrest") FinancerRateofIntrest intrest, Model model, HttpServletRequest request, HttpServletResponse response) throws Exception {
        rateofintrest.save(intrest);
        return "admin-products-emi";
}

Кроме того, из метода контроллера, где вы возвращаете свой jsp стр.

...