如何将速度表达式转换为 JSP?
我有一个页面正在从 Velocity 转换为 JSP。我有一些复杂的表达式,我不知道如何转换为 JSTL el 语言。
#set ($col = 0)
#foreach ($hour in $form.bean.grid.hours)
$hour.cells.get($col).hourOfDay
#set ($col = $col + 1)
#end
Hour 是一个对象,其中包含一个包含列表的单元格。我需要通过数字索引获取每个元素。
有什么想法吗?
I have a page which I'm converting from Velocity to JSP. I have some complex expressions which I can't figure out how to convert to JSTL el language.
#set ($col = 0)
#foreach ($hour in $form.bean.grid.hours)
$hour.cells.get($col).hourOfDay
#set ($col = $col + 1)
#end
Hour is an object which contains a cell which contains a list. I need to get each element through a numeric index.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
基本上,您正在显示一天中的几个小时。使用 JSTL,
index.count 中的
count
从 1 开始计数到 N(因此将其取反 1)。Basically, you're displaying hours of day. Using JSTL,
The
count
in index.count starts counting from 1 to N (so negate it by 1).类似于:
只有当
hour.cells
是Map
时,这才有效,因此原始中的cells.get($col)
表达式正在该Map
上调用get()
。如果它是任意方法调用,那么它将不起作用,因为 JSP EL 只能处理 bean 属性或集合。正如 @EliteGentleman 指出的,您可以在
forEach
循环上使用varStatus
来消除对单独循环计数器的需要,您应该这样做。我的片段是更直译的。Something like:
This will only work if
hour.cells
is aMap
, so that thecells.get($col)
expression in the original is callingget()
on thatMap
. If it's an arbitrary method call, then it won't work, since JSP EL can only handle bean properties or collections.As @EliteGentleman points out, you can use the
varStatus
on theforEach
loop to remove the need for a separate loop counter, which you should do. My fragment was a more literal translation.