0

如何使用 struts2 标签库编写以下代码。因为 struts2 有很多标签,比如迭代器、if 等,但是如何使用它来实现下面的代码呢?

我们如何初始化 struts2 标记中的变量,然后如何应用递增或递减操作,如下所示的代码?

int j=-1;
for(int i=0;i<4;i++)
{
j++;
if(j==0)
{
}
if(j==1)
{
}
if(j==2)
{
j=-1;
}
}

这是我的 jsp 页面,我在其中使用了 scriplet 标记中的 java 代码

<h3>Our Latest Projects</h3>
<%! int j = -1; %>

<%
  for (int i = 0; i < 4; i++) {
    j++;
%>
  <% if (j == 0) { %>
<div class="wrapper">
  <article class="grid_4 alpha">
    <h4 class="p2">Project 1</h4>
    <figure><a href="#"><img class="img-border" src="images/page4-img1.jpg" alt=""/></a></figure>
    <div class="box" style="height: 20px; width: 257px;">
      <div class="padding">
        <a href="#">View Details</a>
      </div>
    </div>
  </article>
  <% } %>

  <% if (j == 1) { %>
  <article class="grid_4">
    <div class="indent-left4">
      <h4 class="p2">Project 2</h4>
      <figure><a href="#"><img class="img-border" src="images/page4-img2.jpg" alt=""/></a></figure>
      <div class="box" style="height: 20px; width: 257px;">
        <div class="padding">
          <a href="#">View Details</a>
        </div>
      </div>
    </div>
  </article>
  <% } %>
  <% if (j == 2) { %>
  <article class="grid_4 omega">
    <div class="indent-left3">
      <h4 class="p2">Project 3</h4>
      <figure><a href="#"><img class="img-border" src="images/page4-img3.jpg" alt=""/></a></figure>
      <div class="box" style="height: 20px; width: 257px;">
        <div class="padding">
          <a href="#">View Details</a>
        </div>
      </div>
    </div>
  </article>
</div>
<br><br>
<% j = -1; %>
<% } %>
<% } %>
4

1 回答 1

2

这悲剧。

这是除了article > div样式之外的所有内容,因为不清楚它与其他任何东西的关系;您应该能够根据此代码的其余部分弄清楚。

<div class="wrapper">
  <s:iterator begin="1" end="#session.count" status="stat">
    <s:set var="artClass" value="#stat.first ? 'alpha' : #stat.last ? 'omega' : ''" />

    <article class="grid_4 <s:property value="#artClass"/>">
      <div> <!-- Not really sure what you want here for the class. -->
        <h4 class="p2">Project <s:property value="#stat.count"/></h4>
        <figure><a href="#"><img class="img-border" src="images/page4-img<s:property value="#stat.count"/>.jpg" alt=""/></a></figure>
        <div class="box" style="height: 20px; width: 257px;">
          <div class="padding">
            <a href="#">View Details</a>
          </div>
        </div>
      </div>
    </article>
  </s:iterator>
</div>

此外,如果“alpha”和“omega”用于第一列和最后一列,而不是列表中的第一个/最后一个项目,您可能需要稍微改变一下。就个人而言,我会在 Java 代码中将列表拆分为三个列表并进行两次迭代:

<s:iterator value="listOfLists" var="list">
  <s:iterator value="list" status="stat">
    <s:set var="artClass" value="#stat.first ? 'alpha' : #stat.last ? 'omega' : ''" />

    <article class="grid_4 <s:property value="#artClass"/>">
      <div> <!-- Not really sure what you want here for the class. -->
        <h4 class="p2">Project <s:property value="#stat.count"/></h4>
        <figure><a href="#"><img class="img-border" src="images/page4-img<s:property value="#stat.count"/>.jpg" alt=""/></a></figure>
        <div class="box" style="height: 20px; width: 257px;">
          <div class="padding">
            <a href="#">View Details</a>
          </div>
        </div>
      </div>
    </article>
  </s:iterator>
  <br/><br/> <!-- Use CSS. -->
</s:iterator>

您还可以将其封装在自定义标记和实用程序方法中,并使事情变得非常干净。

于 2012-08-22T02:32:33.793 回答