JSTL代码:
<c:forEach var = "currentUser" items = "${users}">
<c:out value = "${currentUser.userName}" /></p>
<c:if test = "${!empty param.${currentUser.id}}">
<p>Details</p>
</c:if>
</c:forEach>
我有一个用户对象列表,我显示了他们所有的名字。如果想要查看任何用户的详细信息,请求将发送到servlet,该servlet将返回名为id和DetailUser对象的Attribute
的Servlet
req.setAttribute(currentUSer.getId, userDetails);
问题是,现在如果必须在if测试中使用“id”的值不作为参数,而是使用参数名称。我在EL表达式中尝试过EL,但我确信它不被允许。还有其他建议吗?
答案 0 :(得分:0)
在我看来,你使它变得比它更复杂。我只是做
req.setAttribute("userDetails", userDetails);
并在JSP中测试当前用户的ID是否与要详细的ID相同:
<c:if test="${userDetails.id == currentUser.id}">
<p>Details</p>
</c:if>
BTW,param.foo返回请求参数的值,而不是请求属性的值。 你可以使用
做你想做的事<c:if test = "${!empty requestScope[currentUser.id]}">
[]
符号而不是.
运算符是传递动态名称而非静态名称的方法。