属性命名约定导致 JSP 页面中的长 EL 表达式

Posted

技术标签:

【中文标题】属性命名约定导致 JSP 页面中的长 EL 表达式【英文标题】:Attributes naming convention resulting in long EL expressions in JSP Page 【发布时间】:2013-05-29 17:15:06 【问题描述】:

我正在为不同的视图编写很多 JSP 页面。那些 JSP 检索具有很长名称以防止重叠的请求范围属性。一个例子是:

request.getAttribute("domain1.subdomain1.subdomain11.subdomain111.attributeName");

EL 中的等价物是:

$requestScope['domain1.subdomain1.subdomain11.subdomain111.attributeName']

有时,我的 EL 表达式很长(例如,当我使用 3 个不同的 JavaBeans 创建 html 标记或调用 javascript 函数时)。

我的问题是我找到的解决方案是否是一个好的编程解决方案。鉴于每个视图都有自己的页面范围,在我的 JSP 的开头,我想放

<c:set var="attributeName" scope="page" value="$requestScope['domain1.subdomain1.subdomain11.subdomain111.attributeName']"

然后在我的 EL 表达式中,我将使用

$pageScope["attributeName"]

这不会在阅读JSP代码时对属性的实际范围造成混淆吗?

【问题讨论】:

即使你要执行这个,这也违反了德墨忒耳定律。是不是可以为subdomain111开发jsp组件,然后把这些组件插在一起,形成subdomain11 jsp组件等等? 那将是一个很好的解决方案,但属性命名约定超出了我的能力范围。请求在到达 JSP 之前要经过许多步骤,甚至还有过滤器在 JSP 之后使用某些属性来处理请求。我无法更改请求中的属性命名。我什至没有使用设置某些属性的各种控制器 应该是$pageScope[attributeName](不带引号)。 我不确定,因为使用这种语法,我认为 EL 会搜索变量 attributeName 并使用它的值在实际上不是字符串的 pageScope 中进行搜索。 【参考方案1】:

这似乎是在为长变量名创建别名;没关系。

【讨论】:

以上是关于属性命名约定导致 JSP 页面中的长 EL 表达式的主要内容,如果未能解决你的问题,请参考以下文章

EL表达式

jsp-EL表达式

EL表达式

EL表达式

EL表达式详解

JSP标签技术