【问题标题】:JSP EL and Scriptlets - How to Avoid mixing jstl and scriptlet varsJSP EL 和 Scriptlet - 如何避免混合 jstl 和 scriptlet vars
【发布时间】:2009-07-07 00:20:11
【问题描述】:

通过 jsp el 访问非属性

在下面的代码中,我需要访问一个不是属性的方法。我需要一个可见的 c:foreach 变量作为测试。我正在处理别人的代码。我对它的设计不是特别满意,但是在处理别人的代码时这很容易。

我宁愿只在控制器中设置实际可见的角色,但所有数据都是从多个位置的全局缓存中读取的。下面的垃圾代码代表获得所需行为的最少代码行。

//在 scriptlet 上下文中无权访问角色

">

如果>

一个简单的解决方案是......如果我能做到的话:

//不能通过el调用isVisible我不相信

但我很确定你不能这样做。

我正在重写以避免 scriptlet,但如果有人有快速修复,我会接受它。

谢谢。

【问题讨论】:

    标签: model-view-controller jsp


    【解决方案1】:

    我宁愿只在控制器中设置实际可见的角色,但所有数据都是从多个位置的全局缓存中读取的

    如果我理解正确的话应该没有问题。

    我假设 authUser 在会话范围内

    session.authUser
    

    如果没有,则设置它:

    <c:set var"authUser" value="${session.authUser}" scope="session" />
    

    然后你要做的就是找到一种方法将会话中的 authUser 输入到角色 Bean 中,从而允许你:

    <c:if test="${role.isVisible}">
    

    啊,也许不是……

    我想我会写一个自定义标签

    <mytag:isVisible role="${role}" user="${session.authUser}">
        // do work
    </mytag:isVisible>
    

    【讨论】: