【问题标题】:Struts2 increment a previous set <s:set /> valueStruts2 增加一个先前设置的 <s:set /> 值
【发布时间】:2013-03-16 12:15:34
【问题描述】:

我正在使用 Struts2 开发 JSP,我必须迭代两个列表,并更改每个打印的 &lt;tr/&gt; 的背景代码。

我的 JSP sn-p:

<s:set var="counter" value="0" scope="page" />
<s:iterator value="listaContoCapitale" status="i">
    <s:iterator value="utilizzi" status="j">

    <s:if test="#counter == 0 || #counter % 2 == 0">
        <s:set var="trclass" value="'rigaSfondo1'" scope="page" />
    </s:if>
    <s:else>
        <s:set var="trclass" value="''" scope="page" />
    </s:else> 
    <tr class="${trclass}">
        ....tds
    </tr>
    </s:iterator>
    <s:set var="counter" value="here i have to change its value (increment it by1)" />
</s:iterator>

我需要在内部循环的每一步都增加我的计数器。有没有办法通过一个简单的 struts 标签来增加我的计数器值?我知道我可以使用 Java scriptlet,但如果可能的话,我宁愿保持 JSP 清晰。

【问题讨论】:

  • 除了Roman的回答,考虑使用三元来缩短类决策逻辑
  • 三元是什么意思?

标签: java jsp struts2 jsp-tags


【解决方案1】:

您不需要创建引用变量,只需在迭代器中使用#i.index#i.count。它已经被迭代器标签本身增加了。

请注意,“count”是从 1 开始的,“index”是从 0 开始的。

始终检查docs

如果你还需要自己的柜台

<s:set var="counter" value="0"/>

递增

<s:set var="counter" value="%{#counter+1}"/>

【讨论】:

  • 需要一个单独的计数器,因为它需要基于内部循环而不是在外部循环出现时重置。
  • 我不能使用迭代器的基本计数器,如果你检查我的代码,你会发现外循环和内循环都不会给我一个从奇数到偶数交替的正确计数器, 以设置背景颜色(trclass 变量);在任何情况下,它是否以 0 或 1 开头都没关系......在发布我的问题之前,我尝试了您的解决方案 ( ) 但它通过翻译 JSP 页面给了我一个错误。明天我会再试一次...
  • 检查奇数或偶数可以使用j.evenj.odd 这是布尔值。最后一条语句应该有效,不是吗?
  • 像魅力一样工作,使用&lt;s:property value="#counter"/&gt;来显示它。
  • 有效,但前提是我从第一个定义中删除范围。
【解决方案2】:

你可以使用这个简单的方法来做这个 struts2 增量

<s:set var="count" value="1"/>
<s:iterator value="yourlisthere">
<div><s:property value="#count" /><s:property/></div>
<s:set var="counter" value="%{#count+1}"/>
<s:set var="count" value="%{#counter}"/>
</s:iterator>

jsp struts2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-25
    • 2014-07-13
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多