param 传参
用于给其他标签传参。比如给include标签传递参数。
常用控制标签
if elseif else 流程控制标签
if标签可以独立使用。Elseif和else标签需要跟if标签搭配才能使用。说白了就是替代我们的if、elseif、else语句的功能。在jsp中使用更加方便,下面是使用例子:
<% request.setAttribute("random",new Random().nextInt(100)); %> <s:if test="#request.random>=80"> <b>运气不错!</b> </s:if> <s:elseif test="#request.random>=60"> <b>运气一般!</b> </s:elseif> <s:else> <b>运气不怎么样!</b> </s:else> |
iterator 循环迭代标签
iterator主要用来对集合(list/set/map/数组)进行迭代。
常用的属性有:
1. value 将要迭代的集合,使用OGNL表示
2. var 指向集合中正被迭代的对象
3. begin 如果指定,迭代器从begin指定的索引开始
4. end 如果指定,迭代器到end指定的索引结束(包含end索引指向的对象)
5. step 如果指定,迭代器每次递增的增量。如果不指定,默认是1
6. status 用来表示迭代器状态的变量。他有如下的方法:
int getCount() 返回迭代次数
int getIndex() 返回当前迭代的索引值
boolean isEven() 当前迭代的索引值是否偶数
boolean isFirst() 当前迭代的索引值是否第一个元素
boolean isLast() 当前迭代的索引值是否最后一个元素
boolean isOdd() 当前迭代的索引值是否奇数
下面是测试代码:
<body> <s:set var="s" value="{00,11,22,33,44,55,66,77,88,99}" ></s:set> <table width="200px" border="1"> <s:iterator value="#request.s" var="temp" begin="0" end="7" step="1" status="idx"> <s:if test="#idx.odd"> <tr bgcolor="gray"><td><s:property value="#idx.index"/>---<s:property value="#temp" /></td></tr> </s:if> <s:else> <tr><td><s:property value="#idx.index"/>---<s:property value="#temp" /></td></tr> </s:else> </s:iterator> </table> </body> |
执行结果:
常用表单UI标签
学习UI标签,我们要结合生成的HTML源代码,即可很深刻的理解标签的作用和含义。
form 表单
<s:form>标签用于生成HTML中的<form>,以及相关的布局代码(这里是用table标签来做布局)。
代码示例和生成的HTML代码:
<s:form action="test" name="regFrm"> <s:textfield label="用户名" name="uname"></s:textfield> <s:password label="密码" name="pwd" ></s:password> <s:textfield label="邮箱" name="email"></s:textfield> <s:submit value="注册" ></s:submit> </s:form> |
<form id="test" name="regFrm" action="test" method="post"> <table class="wwFormTable"> <tr> <td class="tdLabel"> <label for="test_uname" class="label"> 用户名: </label> </td> <td> <input type="text" name="uname" value="" id="test_uname" /> </td> </tr>
<tr> <td class="tdLabel"> <label for="test_pwd" class="label"> 密码: </label> </td> <td> <input type="password" name="pwd" id="test_pwd" /> </td> </tr>
<tr>
<td class="tdLabel"> <label for="test_email" class="label"> 邮箱: </label> </td> <td> <input type="text" name="email" value="" id="test_email" /> </td> </tr>
<tr> <td colspan="2"> <div align="right"> <input type="submit" id="test_0" value="注册" /> </div> </td> </tr>
</table> </form> |
根据生成的HTML源代码,我们可以深刻的理解<s:form>标记的含义。同时,我们通过javascript操作时也可以更加深刻,控制力更强。
textfield 文本域
对应HTML中的<input type=text />,即普通文本域。
<s:textfield label="用户名" name="uname"></s:textfield> |
<tr> <td class="tdLabel"> <label for="test_uname" class="label"> 用户名: </label> </td> <td> <input type="text" name="uname" value="" id="test_uname" /> </td> </tr> |
textarea 多行文本域
对应html标签中多行文本域<textarea>。
<s:textarea label="自我介绍" name="selfIntro" rows="5" cols="50" value="请输入自我说明"></s:textarea> |
<tr> <td class="tdLabel"> <label for="test_selfIntro" class="label"> 自我介绍: </label> </td> <td> <textarea name="selfIntro" cols="50" rows="5" id="test_selfIntro">请输入自我说明</textarea> </td> </tr> |
file 文件域
对应文件域。示例代码如下:
<s:file label="上传头像" name="logo"></s:file> |
<tr> <td class="tdLabel"><label for="test_logo" class="label">上传头像:</label></td> <td><input type="file" name="logo" value="" id="test_logo"/></td> </tr> |
checkbox
checkbox对应HTML中的checkbox标签。示例如下:
<s:checkbox value="true"[A1] name="favorite" label="已阅读协议" fieldvalue="1"></s:checkbox> |
<tr> <td valign="top" align="right"> </td> <td valign="top" align="left">
<input type="checkbox" name="favorite" value="true" checked="checked" id="test_favorite" /> <input type="hidden" id="__checkbox_test_favorite" name="__checkbox_favorite" value="true" /> <label for="test_favorite" class="checkboxLabel"> 已阅读协议 </label> </td> </tr> |
checkboxlist 复选框
由于复选框往往是多个一组使用,Checkboxlist帮助我们跟集合结合使用,很容易写出多个复选框。示例如下:
<s:set var="a" value="{'学java','用java','教java','发呆'}" scope="request"></s:set> <s:checkboxlist list="#request.a" name="favorite" label="喜欢做的事" ></s:checkboxlist> |
<tr> <td class="tdLabel"> <label for="test_favorite" class="label"> 喜欢做的事: </label> </td> <td> <input type="checkbox" name="favorite" value="学java" id="favorite-1" /> <label for="favorite-1" class="checkboxLabel"> 学java </label>
<input type="checkbox" name="favorite" value="用java" id="favorite-2" /> <label for="favorite-2" class="checkboxLabel"> 用java </label> <input type="checkbox" name="favorite" value="教java" id="favorite-3" /> <label for="favorite-3" class="checkboxLabel"> 教java </label> <input type="checkbox" name="favorite" value="发呆" id="favorite-4" /> <label for="favorite-4" class="checkboxLabel"> 发呆 </label> <input type="hidden" id="__multiselect_test_favorite" name="__multiselect_favorite" value="" /> </td> </tr> |
另一种常见用法:
<s:checkboxlist list="#{'1':'学java','2':'用java','3':'教java','4':'发呆'}" value="{'1','2'}" name="favorite" label="喜欢做的事" ></s:checkboxlist> |
页面效果: |
表示被选中。