使用 jstl 访问类属性

Kle*_*ota 5 java spring jsp jstl

在我的 spring 项目中,我的视图从控制器接收到一个 Map 对象,如下所示:

Map<String, List<?>>
Run Code Online (Sandbox Code Playgroud)

我以这种方式在我的 jsp 代码中访问它:

                <c:forEach var="field" items="${values[item]}">
                    <c:out value="${field}"/> <br/>
                </c:forEach>
Run Code Online (Sandbox Code Playgroud)

考虑到?它是一个普通的 POJO 类所指示的类,我如何在我的 jsp 中访问这个类的属性?换句话说,我应该使用什么正确的指令来替换:

                    <c:out value="${field}"/> <br/>
Run Code Online (Sandbox Code Playgroud)

因为有了这个,当我在浏览器中打开页面时,我会得到类似的信息:

com.spring.loja.model.categoria.persistence.model.Categoria@41c0e228
Run Code Online (Sandbox Code Playgroud)

更新

我尝试使用它,以下是本主题中发布的答案:

<c:out value="${field.name}"/>
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有办法改用这种方法:

@Override
protected String getArgument(int ordem) {
    switch(ordem) {
     case 0: return "Id";
     case 1: return "Login";
     case 2: return "Senha";
     case 3: return "Nome";
     case 4: return "Sobrenome";
     case 5: return "E-Mail";
     case 6: return "Autorizacao";
     default: return null;
     }
}
Run Code Online (Sandbox Code Playgroud)

并且这种方式可以避免使用getter方法的名称(它是一个通用的jsp页面,被多个视图使用,不知道会使用哪种方法)

Kle*_*ota 0

我最终如何解决这个问题:

我在我的服务类中添加了这两个方法:

public Map<String, List<String>> getListaAtributos() {
...
}
public Map<String, List<?>> getListaValores() {
...
}
Run Code Online (Sandbox Code Playgroud)

这两种方法的关键是我的类的属性,与它们关联的值是: null,如果属性具有原始类型,或者第一个方法的类属性列表,以及存储在的值列表该实体中的数据库。

我将此地图传递给我的视图并使用以下方式:

<c:forEach var="atributo" items="${map[item]}">
...
    <form:label path="${item}.${atributo}" class="form-control">${atributo}</form:label>
    <form:input path="${item}.${atributo}" class="form-control"/>
...
</c:forEach>
Run Code Online (Sandbox Code Playgroud)