通过使用字段名称在JSP中获取值

时间:2018-05-28 11:29:33

标签: spring-mvc spring-boot jstl jsp-tags

我的应用程序中有类似下面的要求,

我想以表格的形式显示以下详细信息。

Country   Name  Population  CapitalCity    Aria
US        XX    XX          XX              XX
IN        YY    YY          YY              YY

用户可以在配置页面中选择他有兴趣查看的列。

在后端我设置模型属性如下(使用spring MVC),

model.addAttribute("selColumns", "column keys");
model.addAttribute("countryDetails", "List  of country details");

在CountryDetail类中,字段名称和selColumns键名称相同。

class CountryDetails {

  private String country,
                 population,
                 CapitalCity,
                 Aria;
 }

在UI中,我尝试使用以下代码来实现相同的目标。

<table class="table table-hover table-bordered table-striped">
        <thead>
            <tr>
                <c:forEach items="${selColumns}" var="item">
                <th><spring:message code="${item}" /></th>
                </c:forEach>
            </tr>
        </thead>

        <tbody>
            <c:forEach items="${countryDetails}" var="det">
                <tr>                    
                <c:forEach items="${selColumns}" var="item">
                    <td>
                    //Below code is not working
                    <c:out value="${item.det}" /></td>                  
                        </c:forEach>            
                </tr>
            </c:forEach>
        </tbody> 
    </table>

表头工作正常。但我正在努力只为配置的列显示行信息。 代码不会起作用,因为它试图在java端找到getDet()。

请问有人在JSP中有什么办法,如果我给属性(字段)名称相应的值会返回吗?

像这样的东西

提前致谢, 小猫

1 个答案:

答案 0 :(得分:1)

试试这个。

<tbody>
        <c:forEach items="${countryDetails}" var="det">
          <tr>
             <c:forEach items="${selColumns}" var="item">
                <td>
                   <c:out value="${det[item]}" />
                </td>
             </c:forEach>
          </tr>
      </c:forEach>
</tbody>

注意:

selColumns = ["Country", "Population", "CapitalCity", "Aria"]
CountryDetails properties = Country,Population,CapitalCity,Aria