通过jsp el
访问非属性在下面的代码中,我需要访问一个非属性的方法。我需要一个c:foreach变量作为测试可见。我正在处理别人的代码。我对它的设计并不是特别满意,但在处理别人的代码时这很容易。
我更愿意在控制器中设置实际的可见角色,但所有数据都是从多个位置的全局缓存中读取的。下面的垃圾代表了获得所需行为的最少代码行。
< c:forEach var =“role”items =“$ {resource.value.rs}”>
//无权访问scriptlet上下文中的角色
< c:if test =“<%role.isVisible(session.getAttribute(”authUser“))%>”>
< / C:如果> < / C:的foreach>
一个简单的解决方案就是..如果我能做到:
//不能通过el调用isVisible我不相信
< c:if test =“$ {role.isVisible(session.authUser)}”>
但我很确定你做不到。
我正在重写以避免使用scriptlet,但如果有人快速修复,我会接受它。
感谢。
答案 0 :(得分:1)
我更愿意在控制器中设置实际的可见角色,但所有数据都是从多个位置的全局缓存中读取的
如果我理解正确,应该不是问题。
我假设authUser在会话范围内
session.authUser
如果没有,则设置它:
<c:set var"authUser" value="${session.authUser}" scope="session" />
然后你要做的就是找到一种方法,将authUser从会话中提供给角色Bean,允许你:
<c:if test="${role.isVisible}">
aah也许不是..
我想我会写一个自定义标签
<mytag:isVisible role="${role}" user="${session.authUser}">
// do work
</mytag:isVisible>