1

我认为这对很多人来说很容易,但我不知道我做错了什么。

我的控制器:

@RequestMapping(value = "/novo", method = RequestMethod.GET)
public ModelAndView novoTimeSheet() {

    Usuario usuario1 = new Usuario(1L,"Leandro1","ltsiciliano1@gmail.com");
    Usuario usuario2 = new Usuario(2L,"Leandro2","ltsiciliano2@gmail.com");
    Usuario usuario3 = new Usuario(3L,"Leandro3","ltsiciliano3@gmail.com");
    List<Usuario> usuarioList = new ArrayList<Usuario>();
    usuarioList.add(usuario1);
    usuarioList.add(usuario2);
    usuarioList.add(usuario3);

    Map<String, Object> model = new HashMap<String, Object>();
    model.put("usuarios", usuarioList);

    return new ModelAndView("timesheetcrud/novo", "timesheetcruddto", model);
}

它正在工作:

    <td>Usuário :</td>
    <td>
        <select id="usuarios" name="usuarios">
            <c:forEach items="${timesheetcruddto.usuarios}" var="usuario">
                <option value="${usuario.id}"><c:out value="${usuario.nome}"/></option>
            </c:forEach>
        </select>
    </td>

但我想使用弹簧标签,我把这个:

    <td>Usuário :</td>
    <td>
        <td>
            <form:select id="id_usuario" path="usuarios">
                <form:option value="0" label="--- Select ---" />
                <form:options items="${usuarioList}"/>
            </form:select>
        </td>
    </td>

这是行不通的:

        <td>
            <form:select id="id_usuario" path="usuarios">
                <form:option value="0" label="--- Select ---" />
                <form:options items="${usuarios}"/>
            </form:select>
        </td>

这是错误的:

org.springframework.beans.NotReadablePropertyException: Invalid property 'usuarios' of bean class [java.util.HashMap]: Bean property 'usuarios' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

我想知道使用 spring 标签而不是 JSTL 有什么好处。

谢谢

4

3 回答 3

1

你可以这样做

<form:select path="usuarioList"> <form:options items="${usuarios}" /> </form:select>

于 2015-01-19T04:57:07.427 回答
1

您可以改进您的代码,例如

`<form:select path="usuarioList">
   <form:option value="NONE" label="--- Select ---"/>
   <form:options items="${usuarios}" />
</form:select>
`

另外请更改您的变量名称以获得更合适的名称,例如

     List<Usuario> usuarios= new ArrayList<Usuario>();
    usuarios.add(usuario1);
    usuarios.add(usuario2);
    usuarios.add(usuario3);

    Map<String, Object> model = new HashMap<String, Object>();
    model.put("UserList", usuarios);

看起来比之前好多了

于 2015-01-19T05:32:03.930 回答
1

usuarios 是一个列表 .. 对于一个表单,你需要绑定一个对象

对象将有一个包含 getter 和 setter 的列表。

  object.setUsuarioList(usariolist);
  model.put("object", object);

接着

  <form:options items="${object.usuarioList}"/>
于 2013-06-26T23:23:41.147 回答