属性命名约定导致 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 表达式的主要内容,如果未能解决你的问题,请参考以下文章