struts2自带项目showcase的tags学习笔记struts2自带项目showcase的tags学习笔记第一、首先我们来看non-ui的
struts2自带项目showcase的tags学习笔记
struts2自带项目showcase的tags学习笔记
第一、首先我们来看non-ui的标签。
有几个需要注意的地方:
1.actionTag
<s:action name="includePage" namespace="/tags/non-ui/actionTag" executeResult="true" />
这里的action并不是存在于url或是form中,而是直接一个单独的标签,这里的executeResult为true表示显示结果集。即显示的结果为:
<tr> <td><strong>Now Date</strong></td> <td>dd.MM.yyyy hh:mm:ss</td> <td><s:date name ="#mydate.now" format ="dd.MM.yyyy hh:mm:ss"/></td> </tr>
就会得到name ="#mydate.now"
查看OGNL文档,我们得知<td><strong>Before Date</strong></td><td>nice</td><td><s:date name ="#mydate.before" nice ="true"/></td> 这里的nice并不是输出时间,而是以文字的方式表示时间。
像这里就显示 <s:generator val ="%{value}" separator ="%{separator}" count ="%{count}"><s:iterator value ="%{top}"><s:property /></s:iterator></s:generator> 这里s:iterator 就是迭代值栈的栈顶。s:property 的Value没有 就代表使用默认值,即取出对象。
b. 这里就是用到了
<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
welcome-file-list 就是用来指定在一个目录中默认的名字,所以这里实际就是跳转到/tags/non-ui/index.jsp。
4、<s:append>的使用:<s:generator var="iterator1" separator="," val="%{iteratorValue1}" /> <s:generator var="iterator2" separator="," val="%{iteratorValue2}" /> <s:append id="appendedIterator"> <s:param value="%{#attr.iterator1}" /> <s:param value="%{#attr.iterator2}" /> </s:append> 这里要注意 <s: generator> 的var的功能
<s:generator var="iterator" val="%{iteratorValue}" separator="," /> <s:subset count="%{count}" start="%{start}" source="%{#attr.iterator}" > <s:iterator> <s:property /><br/> </s:iterator> </s:subset>
subset标签属性如下:
count :Integer: Iterator中被递归的一部分的item的数量 即:你要迭代的集合的大小
Decider org.apache.struts2.util.SubsetIteratorFilter.Decider
用来判断iterator中的item是否包含在最终的subset内部
Source String Iterator的对象 即你要迭代的对象
Start Integer 开始位置 从哪开始迭代。
第二、首先我们来看ui的标签。
1 :<s:select>
<s:select name ="favouriteColor" label ="Favourite Color" tooltip ="please select your favourite color" list ="{'blue','yellow','red','green'}"emptyOption ="true"headerKey ="None"headerValue ="None" />
首先看list ="{'blue','yellow','red','green'}" 注意其中的单引号。其次 这里<s:doubleselectname = "region"label ="Region"list ="{'江苏','广东'}"value ="'江苏'"doubleName = "state"doubleValue = "'南京'"doubleList = " top== '江苏'?{'南京','无锡'}:{'广州','深圳'}"headerKey="-1" headerValue="---------- Please Select ----------" emptyOption="true" />
a这里要注意value 表示默认的值,而doubleValue 和doubleList、doubleName表示第二栏的默认值,选项、以及名字.
b.还要注意一个关键的地方,就是value ="'江苏'",因为value是String值,而单单一个“”是无法表示String的,必须要使用'',并且这里不能使用""江苏""这种形式,这会产生歧义。
3、<s:optiontransferselect>
<s:optiontransferselectname = "leftSideFootballTeam"label = "Football Team"list ="{'Chelsea','Arsenal','ManUnited'}"headerKey = "headerKey"headerValue = "---------- Please Select ----------"emptyOption = "true"doubleName = "rightSideFootballTeam"doubleList ="{'Liverpool','ManCity','Leeds'}"doubleHeaderKey = "doubleHeaderKey"doubleHeaderValue = "---------- Please Select ----------"doubleEmptyOption = "true"leftTitle="Left Title" rightTitle="Right Title"/>
同样这里的double可以理解为第二栏的属性,注意没有doubleLabel这个属性,而multiple表示是否多选