Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

erro no form:input

Boa noite, ao mudar de <input"> para form:input dentro da tag no meu formulario de cadastro dos produtos, ele me gera um erro:

org.apache.jasper.JasperException: org.springframework.beans.InvalidPropertyException: Invalid property 'precos[0.valor]' of bean class [org.casadocodigo.Model.Produto]: Invalid index in property path 'precos[0.valor]'; nested exception is java.lang.NumberFormatException: For input string: "0.valor"

Meu formulario de casdastro:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Livros de Java, Android e muito mais. - Casa do Código.</title>
</head>
<body>
    <%--@elvariable id="produto" type="org.casadocodigo.Model.Produto"--%>
    <form:form action="${s:mvcUrl('PC#salva').build()}" method="post" commandName="produto">

        <div>
            <label>Titulo</label>
            <form:input path="titulo"/>
            <form:errors path="titulo"/>
        </div>
        <div>
            <label>Descrição</label>
            <form:textarea path="descricao" cols="20" rows="10"/>
            <form:errors path="descricao"/>
        </div>
        <div>
            <label>Páginas</label>
            <form:input path="paginas"/>
            <form:errors path="paginas"/>
        </div>
        <div>
            <label>Data de lançamento</label>
            <form:input path="data_lancamento"/>
            <form:errors path="data_lancamento"/>
        </div>
        <c:forEach items="${tipos}" var="tipoPrecos" varStatus="status">
            <div>
                <label>${tipoPrecos}</label>
                <form:input path="precos[${status.index}.valor]"/>
                <form:hidden path="precos[${status.index}.tipo]" value="${tipoPrecos}"/>
            </div>
        </c:forEach>
        <div>
            <button type="submit">Cadastrar</button>
        </div>
    </form:form>
</body>
</html>

inclusive na parte do form:input no o intellij detecta um erro na path, informando que ele nao consegue resolver a propriedade "index", "tipo" e "precos[${status.index}".

2 respostas
solução!

precos[${status.index}].valor e precos[${status.index}].tipo

Tente assim.

opa, resolveu sim, porem ainda fica mostrando como se tivesse erro sintático.