Servlets 使用JSTL“;“动态”;参数名

Servlets 使用JSTL“;“动态”;参数名,servlets,jstl,el,Servlets,Jstl,El,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:f

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>

问题是,现在if必须在if测试中使用“id”的值,而不是作为参数,而是作为参数名。我已经试过用EL来表达,但我确信这是不允许的。还有其他建议吗?

在我看来,你让事情变得比可能的更复杂了。我只想这么做

req.setAttribute("userDetails", userDetails);
并且,在JSP中,测试当前用户的ID是否与正在详细说明的ID相同:

<c:if test="${userDetails.id == currentUser.id}">
    <p>Details</p>
</c:if>

细节

顺便说一句,param.foo返回请求参数的值,而不是请求属性的值。 你可以通过使用

<c:if test = "${!empty requestScope[currentUser.id]}">


[]
符号代替
运算符是传递动态名称而不是静态名称的方法。

谢谢!这真的很有帮助!
<c:if test = "${!empty requestScope[currentUser.id]}">