动态使用请求属性对象属性

时间:2013-02-15 07:28:21

标签: jsp jstl

我正在使用Spring MVC应用程序,我有一个带有以下代码的JSP。

<c:choose>
            <c:when test="${type eq 'school'}">
            <h1 class="title">${schoolVO.name}</h1>
            </c:when>

            <c:when test="${type eq 'college'}">
            <h1 class="title">${collegeVO.name}</h1>

            </c:when>

            <c:when test="${type eq 'tution'}">
             <h1 class="title">${tutionVO.name}</h1>
            </c:when>
            ...
            ..
            ..
            Many other types...

</c:choose>

当控制器中存在依赖于type的方法时,会调用此jsp 设置模型属性。

如果类型为school,则输入

modelMap.addAttribute("schoolVO", school);

如果大学那么

modelMap.addAttribute("collegeVO", college);

与其他人一样..

现在我要删除<c:when>中的jsp条件。

现在根据我想要添加一个模型属性的类型并放置其中一个 schoolVOcollgeVO喜欢

modelMap.addAttribute("typeVO", "schoolVO");

因此我不需要在<c:when>中使用if jsp条件。 我想使用像

这样的东西
${{typeVO}.name}

但是这给了我错误

 contains invalid expression(s): javax.el.ELException: Error Parsing:

我怎么能做到这一点? 提前谢谢。

P.S。我无法得到我的问题的正确标题。如果有合适的东西我可以改变它。

2 个答案:

答案 0 :(得分:0)

如果所有人都有一个名为name的字段,那么您可以${typeVO.name}

答案 1 :(得分:0)

您可以在请求中设置许多不同的属性使自己复杂化。 AFAIK,最好有一个属性来处理你想要打印的名称:

modelMap.addAttribute("institutionName", school.getName());
//or
modelMap.addAttribute("institutionName", college.getName());

包含您将要打印的标题,然后在您的JSP中,您没有使用任何验证,只需编写

<h1 class="title">${institutionName}</h1>