使用Struts2更改页面的行为

时间:2013-02-04 08:37:28

标签: jsp struts2

我正在使用Struts2编写一个网页。

我的需要是只在Action类的布尔属性(即sectionHidden)设置为false时才在表中显示一行。为此,我编写了以下代码:

<s:if test="sectionHidden"><tr id="sectionTitle" style="display: none;"></s:if>
<s:else><tr id="sectionTitle"></s:else>
    <td>This is the section title</td>
</tr>

我认为这不是最好的方法,还有其他更好的方法吗? (我想避免写两次与tr相关的html代码)

3 个答案:

答案 0 :(得分:2)

根据您的需求,

如果要裁剪它,请使用一个<s:if>绘制(或不绘制)行,如AleksandrM答案;

如果你想要隐藏它,但是你希望它在页面中(例如稍后用javascript显示它,或者在源中查看它),你可以使用<s:if>来应用(或不)隐藏的状态:

<tr id="sectionTitle" <s:if test="sectionHidden">style="display: none;"</s:if>>
   <td>This is the section title</td>
</tr>

答案 1 :(得分:1)

嗯......如何只使用一个<s:if>

<s:if test="!sectionHidden">
  <tr id="sectionTitle">
    <td>This is the section title</td>
  </tr>
</s:if>

答案 2 :(得分:1)

如果tag在下面举例说明,你可以使用struts2测试任何值

<s:if test="anyBooleanValue">
 I am returning TRUE.<br/>
 </s:if>
 <s:else>
 I am returning FALSE.<br/>
 </s:else>

 <!-- For String Value -->
 <s:if test="%{myStringValue!=null}">
 String is not null<br/>
 </s:if>
 <s:elseif test="%{myStringValue==null}">
 String is null<br/>
 </s:elseif>
 <s:else>
 String is null<br/>
 </s:else>

 <!-- For Object Value -->
 <s:if test="%{checkArrayList.size()==0}">
 Object Size is Zero<br/>
 </s:if>
 <s:else>
 Object Size is not a Zero<br/>
 </s:else>

在你的情况下,代码将做正确的工作

    <%@ taglib prefix="s" uri="/struts-tags" %>
 <html>
<head>
</head>

<body>
<h1>Struts 2 If, Else, ElseIf tag example</h1>

<s:set name="sectionHidden" value="false"/>

    <table>

        <tr id="sectionTitle" style="display:<s:if test="sectionHidden">none</s:if><s:else>block</s:else>">
              <td>This is the section title</td>
        </tr>
    </table>
</body>
</html>