一、通用标签
1、数据标签
<h3>set</h3>
<!-- 在ognl上下文的根对象中取result值,赋给test1 -->
<s:set var="test1" value="result"/>
${test1 },${requestScope.test1 }
<h3>property</h3>
<!-- 取栈顶,取cal1(modle) -->
<s:property />,
<!-- 取根对象最上面的对象的属性 -->
<s:property value="num1"/>,<!-- 根对象的属性 -->
<!-- 取根对象的cal2对象的num1属性 -->
<s:property value="cal2.num1"/>,
<!-- 取非根对象cal2对象的num1属性值 -->
<s:property value="#request.cal2.num1"/>
<h3>push</h3>
<!-- pushj就是将你需要的值放在栈顶,便于页面获取 -->
<s:property />
<s:push value="result">
<s:property/>
</s:push>
<s:property/>
<h3>action</h3>
<!-- action通常用来请求后台,获取初始化数据的 -->
<s:action name="tagAction" namespace="/sy" var="test2"></s:action>
<s:property value="#test2.cal2"/>
<h3>url</h3>
<!-- url标签是为了地址所用, 注意与a标签区分-->
<s:url namespace="/sy" action="tagAction" var="test3"></s:url>
<s:property value="#test3"/>
<a href='<s:property value="#test3"/>'>xxx</a>
<s:a href="%{#test3}"></s:a>
<h3>param</h3>
<!-- 两种赋值方式:ongl表达式,字符串 -->
<s:url namespace="/sy" action="tagAction" var="test4">
<s:param name="test5">aaa</s:param><!-- 字符串 -->
<s:param name="test6" value="num1"></s:param><!-- 表达式 -->
</s:url>
<s:property value="#test4"/>
<h3>date</h3>
<%
request.setAttribute("currentDate", new Date());
request.setAttribute("currentDate", new Integer(70));
request.setAttribute("currentDate", new String[]{"gay","ls","ww"});
%>
<s:date name="#request.currentDate" format="yyy-MM-dd"/>
<h3>debug</h3>
<s:debug/>
输出结果:
2、控制标签
<h3>iterator/if/elseif/else</h3>
<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 > 60">B</s:elseif>
<s:else>C</s:else>
输出结果:
二、表单标签
<h3>form</h3>
<h3>textfield</h3>
<h3>radio</h3>
<h3>select</h3>
<h3>textarea</h3>
<h3>hidden</h3>
<h3>submit</h3>
<s:form namespace="" action="">
<s:textfield label="姓名" name="uname"/>
<%-- <s:radio list="{'男','女'}" label="性别" name="sex" value="'男'"/> --%>
<s:radio list="#{1:'男',2:'女'}" label="性别" name="sex" value="2"/>
<s:select label="部门选择" name="deptName" list="#{1:'财务部',2:'公关部',3:'人事部' }"/>
<!-- 单选复选框,往后台传值是传布尔类型的 -->
<s:checkbox label="是否已婚" name="married"/>
<s:checkboxlist label="爱好" name="hobby" list="#{1:'篮球',2:'gay国',3:'蹲坑'"/>
<s:textarea label="个人简介" name="remark"/>
<s:hidden name="xxx" value=""/><!-- 相当于隐藏域 -->
</s:form>
输出结果:
三、标签的属性类型说明
String 字符串
Boolean true|false
Object
Object/String 传过去字符串,但会被认为是一个OGNL表达式进行计算
%{str}:str会被强制转换成OGNL表达式计算
<s:a href="%{#url1}">bbb</s:a>
标签的公共属性
var 将值保存到上下文(ActionContext)中的一个key
小结:
1、value表达式讲解(与c标签作比较)
2、set中var没有放到值栈中
3、action 再发一次请求 是为了调后台模块代码,拿数据
4、url 没有发请求,只为了生成url链接地址
%{str}:str会被强制转换成OGNL表达式计算
以上最最重要的是通过debug标签去拿值