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页面,被多个视图使用,不知道会使用哪种方法)
我最终如何解决这个问题:
我在我的服务类中添加了这两个方法:
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)