如何将速度表达式转换为 JSP?

发布于 2024-08-21 14:37:00 字数 283 浏览 11 评论 0原文

我有一个页面正在从 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷月断魂刀 2024-08-28 14:37:00

基本上,您正在显示一天中的几个小时。使用 JSTL,

<c:forEach items="${form.bean.grid.hours}" var="hour" varStatus="index">
   ${hour.cells[index.count - 1].hourOfDay}
</c:forEach>

index.count 中的 count 从 1 开始计数到 ​​N(因此将其取反 1)。

Basically, you're displaying hours of day. Using JSTL,

<c:forEach items="${form.bean.grid.hours}" var="hour" varStatus="index">
   ${hour.cells[index.count - 1].hourOfDay}
</c:forEach>

The count in index.count starts counting from 1 to N (so negate it by 1).

情深已缘浅 2024-08-28 14:37:00

类似于:

<c:set var="col" value="0"/>

<c:forEach items="${form.bean.grid.hours}" var="hour">
   ${hour.cells[col].hourOfDay}
   <c:set var="col" value="${col + 1}"/>
</c:forEach>

只有当 hour.cellsMap 时,这才有效,因此原始中的 cells.get($col) 表达式正在该 Map 上调用 get()。如果它是任意方法调用,那么它将不起作用,因为 JSP EL 只能处理 bean 属性或集合。

正如 @EliteGentleman 指出的,您可以在 forEach 循环上使用 varStatus 来消除对单独循环计数器的需要,您应该这样做。我的片段是更直译的。

Something like:

<c:set var="col" value="0"/>

<c:forEach items="${form.bean.grid.hours}" var="hour">
   ${hour.cells[col].hourOfDay}
   <c:set var="col" value="${col + 1}"/>
</c:forEach>

This will only work if hour.cells is a Map, so that the cells.get($col) expression in the original is calling get() on that Map. 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 the forEach loop to remove the need for a separate loop counter, which you should do. My fragment was a more literal translation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文