一、Struts的通用标签
1.数据标签
property
set 例: <s:set var="test1" value="result"></s:set>
${test1 },${requestScope.test1 }----<br>
<!-- 这句话的意思是在ognl上下文的根对象中取result值,赋给test1,value放的不是字符串,而是表达式,set中var没有放到值栈中,是非根对象-->
push <!--push及时将你需要的值放到栈顶,便于页面获取 -->
action <!-- 通常用来请求后台,获取初始化数据的 -->
例:<s:action name="fuxiAction" var="test2" namespace="/sy"></s:action>
<s:property value="#test2.cal2.num1"/>
url <!-- url是为了上传地址所用,不访问后台,注意与a标签区分 -->
例: <s:url namespace="/sy" action="fuxiAction" var="test3"></s:url>
<s:property value="#test3"/>
<a href='<s:property value="#test3"/>'>xxx</a>
<s:a href="%{#test3}">ccc</s:a><!-- %{str}:str会被强制转换成OGNL表达式计算 -->
param <!-- 两种赋值方式:ognl表达式,字符串 -->
例: <s:url namespace="/sy" action="fuxiAction" var="test4">
<s:param name="test5">dd</s:param>
<s:param name="test6" value="num1"></s:param>
</s:url>
<s:property value="#test4"/>
显示:/y2_struts2/sy/fuxiAction.action?test5=aa&test6=666
date 例:<s:date name="#request.currentDate" format="yyyy-MM-dd"/>
2.控制标签 iterator/if/elseif/else
<ul>
<s:iterator var="v" value="#request.names">
<li>
<s:property value="#v"/>
</li>
</s:iterator>
</ul>
<s:if test="#request.score >80"> A
</s:if>
<s:elseif test="#request.score >90">AA
</s:elseif>
<s:else>c
</s:else>
二、表单标签
form/textfield/radio/select/textatea/hidden/submit
<s:form namespace="" action="">
<s:textfield label="姓名" name="uname"> </s:textfield>
<%-- <s:radio list="{'男','女'}" label="性别" name="sex" value="'男'"></s:radio> --%>
<s:radio list="#{1:'男',2:'女'}" label="性别" name="sex" value="1"></s:radio>
<s:select label="部门选择" name="deptName" list="#{1:'人事部',2:'hh不补',3:'sdd' }"></s:select>
<!--单选复选框 往后台传值是布尔类型的 -->
<s:checkbox label="是否结婚" name="married" />
<s:checkboxlist label="爱好" name="hobby" list="#{1:'aa',2:'bb',3:'cc' }"/>
<s:hidden name="uname" value="aa"/>
<s:textarea label="备注" name="remark"></s:textarea>
<s:submit></s:submit>
</s:form>
总结:
1、value表达式讲解(与c标签作比较)
2、set中var没有放到值栈中
3、action 再发一次请求 是为了调后台模块代码,拿数据
4、url 没有发请求,只为了生成url链接地址
%{str}:str会被强制转换成OGNL表达式计算
以上最最重要的是通过debug标签去拿值