1.s:fielderror输出指定错误信息,而不是输出全部错误信息
在struts2框架中,例如在完成数据类型转换、数据校验时如果出现错误信息,我们会利用ActionSupport类中addFieldError方法来添加错误信息内容(如:在Action中使用this.addFieldError("username" , "用户名已存在!");
)。在JSP页面中利用<s:fielderror/>标签在相应的字段处输出错误信息。(如:JSP页面:<s:textfield name="username" label="用户名"/>,在该处后面使用<s:fielderror/>标签, 那么上面的错误信息也就会显示到username这个输入框的旁边。)
但是,在实际开发中,<s:fielderror/>它会输出全部的错误信息内容。而如果想选择性地输出指定错误信息。我们可以使用如下代码解决:
第一种方法:
<s:fielderror>
<s:param>username</s:param> <!--显示指定的 username字段的 错误消息-->
<s:param>username2</s:param> <!--显示指定的 username2字段的 错误消息-->
<s:fielderror/>
第二种方法:
<s:fielderror fieldName="username"/> <!--显示指定的 username字段的 错误消息-->
<s:fielderror fieldName="username2"/> <!--显示指定的 username2字段的 错误消息-->
2.日期格式化
4. iterator:是一个迭代器,用于将集合迭代输出(var可选 指定则实例放入栈的上下文 允许用var直接使用)
5.判断
在struts2框架中,例如在完成数据类型转换、数据校验时如果出现错误信息,我们会利用ActionSupport类中addFieldError方法来添加错误信息内容(如:在Action中使用this.addFieldError("username" , "用户名已存在!");
)。在JSP页面中利用<s:fielderror/>标签在相应的字段处输出错误信息。(如:JSP页面:<s:textfield name="username" label="用户名"/>,在该处后面使用<s:fielderror/>标签, 那么上面的错误信息也就会显示到username这个输入框的旁边。)
但是,在实际开发中,<s:fielderror/>它会输出全部的错误信息内容。而如果想选择性地输出指定错误信息。我们可以使用如下代码解决:
第一种方法:
<s:fielderror>
<s:param>username</s:param> <!--显示指定的 username字段的 错误消息-->
<s:param>username2</s:param> <!--显示指定的 username2字段的 错误消息-->
<s:fielderror/>
第二种方法:
<s:fielderror fieldName="username"/> <!--显示指定的 username字段的 错误消息-->
<s:fielderror fieldName="username2"/> <!--显示指定的 username2字段的 错误消息-->
用法:
<s:if test="hasFieldErrors()">
<div class="span12">
<div class="alert alert-info">
<button type="button" class="close" data-dismiss="alert">×</button>
<h4>
提示!
</h4>
<s:fielderror>
<s:param>message</s:param>
</s:fielderror>
</div>
</div>
</s:if>
2.日期格式化
<s:date format="yyyy-MM-dd hh:mm:ss" name="#request.storeActivity.startTime"/>
3.if……elseif……else,用来控制选择输出的标签
<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>s:if标签测试</title>
</head>
<body>
<!-- 在Stack Context中定义一个age属性,其值为29 -->
<s:set name="age" value="29"/>
<!-- 如果Stack Context中的age属性大于60 -->
<s:if test="#age>60">
老年人
</s:if>
<!-- 如果Stack Context中的age属性大于35 -->
<s:elseif test="#age>35">
中年人
</s:elseif>
<!-- 如果Stack Context中的age属性大于15 -->
<s:elseif test="#age>15">
青年人
</s:elseif>
<s:else>
少年
</s:else>
</body>
</html></span>
4. iterator:是一个迭代器,用于将集合迭代输出(var可选 指定则实例放入栈的上下文 允许用var直接使用)
<s:iterator value="#request.roleMap" var="map">
<s:if test="#map.value eq 'true'">
<option selected value="<s:property value="#map.key.id"/>"><s:property
value="#map.key.nameEn"/></option>
</s:if>
<s:else>
<option value="<s:property value="#map.key.id"/>"><s:property
value="#map.key.nameEn"/></option>
</s:else>
</s:iterator>
5.判断
<s:if test="#request.isEditOrAdd=='editor'">
</s:if>
<s:if test="#request.isEditOrAdd eq 'editor'">
</s:if>
<s:if test="#request.storeActivity.type==1">
<option value="1" selected>折扣</option>
<option value="2">促销</option>
<option value="3">会员活动</option>
<option value="0">其他</option>
</s:if>
<s:if test="#request.storeActivity.title!=null">
<div class="col-sm-10">
<input type="text" class="form-control" id="activityTitle" style="width:210px" value="<s:property value="#request.storeActivity.title"/>" name=""/>
</div>
</s:if>
<s:else>
<div class="col-sm-10">
<input type="text" class="form-control" id="activityTitle" style="width:210px" value="<s:property value="#request.storeActivity.title"/>" name=""/>
</div>
</s:else>
6.debug标签:用于辅助调试.在页面上生成超链接,可以查看值栈(value stack),和StackContext中所有信息
<s:debug></s:debug>