【Jsp精品源码栏目提醒】:网学会员Jsp精品源码为您提供Struts2标签库详解 - 其它资料参考,解决您在Struts2标签库详解 - 其它资料学习中工作中的难题,参考学习。
struts2 标签一、写
jsp 页面的时候,在 struts2 中,用的是 s 标记,先引入标记:lt taglib prefixquotsquot uriquot/struts-tagsquotgt二、struts2 的标签和 1 是完全不同的。
struts2 的标签分为两大类:非 UI 标志和 UI 标志 struts1 将标志库按功能分成 HTML、Tiles、Logic 和 Bean 等几部分下面就介绍 strut2 的具体标签:1、UIUI 标志又可以分为表单 UI 和非表单 UI 两部分。
表单 UI 部分基本与 Struts 1.x相同,都是对 HTML 表单元素的包装。
不过,Struts 2.0 加了几个我们经常在项目中用到的控件如:datepicker、doubleselect、timepicker、optiontransferselect 等。
因为这些标志很多都经常用到,而且参数也很多,要在一篇文章详细说明并非易事。
下面主要是 ui 标签的一些用法form:lts:form actionquotexampleSubmitquot methodquotpostquotenctypequotmultipart/form-dataquotgtlts:submit /gt lts:reset /gtlt/s:formgt可以上传文件的 form。
textfield:lts:textfield labelquotequotnamequot tooltipquotEnter your Name herequot /gtdatepicker:lts:datepicker tooltipquotSelect Your Birthdayquot labelquot生日quot namequotbirthdayquot /gttextarea:lts:textarea tooltipquotEnter your remartquot labelquot备注quot namequotremartquot colsquot20quot rowsquot3quot/gtselect:lts:select tooltipquotChoose user_typequot labelquotquot listquotfree:免费vip:收费quot valuequotfree:免费quot namequotbean.user_typequot emptyOptionquottruequot headerKeyquotNonequot headerValuequotNonequot/gtlts:select tooltipquotChoose user_typequot labelquotquot listquotfree:免费vip:收费quot valuequotfree:免费quot namequotbean.user_typequot emptyOptionquottruequot headerKeyquotNonequot headerValuequotNonequot/gtlts:selectlistquotvenderListquotlistKeyquotidquotlistValuequotnamequotvaluequotprofile.companyNamequotnamequotcompanyNamequot cssClassquotsel_style_w_180quot/gt挺好用的checkboxlist:lts:checkboxlist tooltipquotChoose your Friendsquot labelquot朋友quot listquotPatrick Jason Jay Toby Renequot namequotfriendsquot/gtcheckbox: lts:checkbox tooltipquotConfirmed that your are Over 18quot labelquot年龄quot namequotlegalAgequot valuequot18quot/gtfile: lts:file tooltipquotUpload Your Picturequot labelquotPicturequot namequotpicturequot /gta:lts:a hrefquotgetP.jspquotgt超链接提交lt/s:agtdate :lts:date namequotad_end_timequot formatquotyyyy-MM-ddquot/gt2、非 UIif、elseif 和 else 描述:执行基本的条件流转。
参数:名称必需默认类型描述备注 test 是 Boolean 决定标志里内容是否显示的表达式else 标志没有这个参数 id 否 Object/String 用来标识元素的 id。
在 UI 和表单中为 HTML 的 id 属性 例子:lt page c gtlt taglib prefixquotsquot uriquot/struts-tagsquot gtltDOCTYPE HTML PUBLIC quot-//W3C//DTD HTML 4.01 Transitional//ENquotgtlthtmlgt ltheadgt lttitlegtCondition Flowlt/titlegt lt/headgt ltbodygt lth3gtCondition Flowlt/h3gt lt-- 这里有点小技巧: 本来可以用parameters.name0来获得, 请求中 name 的值。
但是,在我实现 include 例子时, 无论我用 param 标志给 name 赋任何值,parameters 里面不会含有任何值,所以parameters.name 也为空值。
其原因为: 当使用 include 标志时,被包含的页面(included)里parameters拿到的是包含页面里的请求参数。
因此,这里必须手工调用 request.getParameterquotnamequot。
--gt lts:iterator valuequotlinkListquot statusquotbeanquotgt lttrgt lttd classquotdata_tab_tdclquotgt lts:property valuequotbean.Index1quot /gt lt/tdgt lttd classquotdata_tab_tdclquotgtlts:property valuequotlink_titlequot /gtlt/tdgt lttd classquotdata_tab_tdclquotgtlts:property valuequotlink_urlquot /gtlt/tdgt lttd classquotdata_tab_tdclquotgt lts:if testquotlink_type 1quotgt 文字 lt/s:ifgt lts:elseif testquotlink_type 2quotgt 图片 lt/s:elseifgt lts:elsegt ----- lt/s:elsegt lt/tdgt lt/bodygtlt/htmlgt例 1 condition.jspiterator 描述:用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。
参数:名称必需默认类型描述 status 否 String 如果设置此参数,一个 IteratorStatus的实例将会压入每个遍历的堆栈 value 否 Object/String 要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象 id 否 Object/String用来标识元素的 id。
在 UI 和表单中为 HTML 的 id 属性 例子:lt page c gtlt page importquotjava.util.Listquot gtlt page importquotjava.util.ArrayListquot gtlt taglib prefixquotsquot uriquot/struts-tagsquot gtltDOCTYPE HTML PUBLIC quot-//W3C//DTD HTML 4.01 Transitional//ENquotgtlt List list new ArrayList list.addquotMaxquot list.addquotScottquot list.addquotJeffryquot list.addquotJoequot list.addquotKelvinquot request.setAttributequotnamesquot listgtlthtmlgt ltheadgt lttitlegtIteratorlt/titlegt lt/headgt ltbodygt lth3gtNames: lt/h3gt lt-- 1、此处的空 property 元素用于获得当前 iterator 的值 2、status 被设成 stuts,在 iterator 的里面就可以通过stuts取得 IteratorStatus 的对象。
IteratorStatus 类包含当前序号信息,如是否第一个或最后一个,是否为奇数序号。
这些信息在我们做格式化的时候,显得非常有用。
--gt ltolgt lts:iterator valuequotrequest.namesquotstatusquotstutsquotgt lts:if testquotstuts.odd truequotgt ltligtWhite lts:property /gtlt/ligt lt/s:ifgt lts:elsegt ltli stylequotbackground-color:grayquotgtlts:property/gtlt/ligt lt/s:elsegt lt/s:iteratorgt lt/olgt lt/bodygtlt/htmlgt1. Struts2 页面开发中常用标签使用说明1.1.往 action 里传值的使用方式:ltinput namequotuserNamequot typequottextquot classquotinput6quot sizequot15quotgta. userName 属性需要在访问的 action 中提供相应的属性,并有 SET/GET 方法。
b. 可以不在访问的 action 中提供相应的属性,用request.getParameter“userName”1.2.显示标签 property 用于输出指定值:lts:property valuequot userName quot/gt 当 action 返回到指定页面是,可以通过该标签显示 action 中的属性信息。
(注 userName 必须在 action 中存在,并有GET 方法)。
1.3.往对象中传值lts:textfieldgt 用于从页面往 action 中的对象内传值:lts:textcolorblue/colorfield namequotuser. userName quotidquotusernamequot/gt该标签可以在页面中向 action 中的实体对象内直接传值。
(注:在 action 中要存在 user 对象,并有 SET/GET 方法。
)1.4.判断lts:ifgt lt/s:ifgt 用于在页面中判断指定数据lts:if testquotuserName adminquotgt…. lt/s:ifgtlts:elsegt…. lt/s:elsegt该标签用于对指定的数据进行判断,但指定的数据必须在 action 中存在。
1.5.迭代lts:iteratorgt用于将 List、Map、ArrayList 等集合进行循环遍历lts:iterator valuequotuserListquot idquotuserquot statusquotuquotgtlts:property valuequotuserNamequot/gtlt/agtlt/s:iteratorgt该标签用于将 userList 集合中的元素进行循环,用过 property 进行显示集合中的指定元素值。
1.6.URL 地址标签,lts:urlgt用于生成一个 URL 地址,可以通过 URL 标签指定的lts:paramgt子元素向 URL 地址发送请求参数lts:url actionquot quotgtlts:param namequot quot valuequotquotgtlt/s:paramgtlt/s:urlgt其中 action 为请求地址,param 子元素为地址后面所带的参数。
1.7.超链接 lta href gt一般和lts:urlgt标签一起使用,用于带多个参数。
lta hrefquotlts:url actionquot quotgtlts:param namequot quot valuequotquotgtlt/s:paramgtlts:param namequot quot valuequotquotgtlt/s:paramgtlts:param namequot quot valuequotquotgtlt/s:paramgtlt/s:urlgtquotgt超链接lt/agt1.8.set 标签,用于将某个值放入指定的范围内。
例如 applicationsession等。
lts:set namequotuserquot valuequotuserNamequot scope”request”/gt将 user 值放入 request 范围内。
2. Struts2 页面开发中常用标签使用规范:1.1.通过ltinput namequotuserNamequot typequottextquot classquot quot sizequot15quotgt往 action 中传值,action 中要有相应的属性,并提供 SET/GET 方法。
(在数量少时可以使用 request.getParameter“userName”)1.2.在页面显示 action 传来的数据,使用 property 标签。
需要显示的数据从action 中获得。
1.3.往 action 中的实体对象内传值,使用 textfield 标签。
1.4.在页面中判断指定值使用lts:ifgt标签。
判断数据从 action 中获得。
1.5.在页面中需要循环列表显示的数据使用lts:iteratorgt标签,列表数据从action 中获得。
1.6.URL 地址和超链接可以使用lta hrefgt和lts:urlgt,在传多值时建议lta hrefgt和lts:urlgt一起使用 Taglib (Struts2 标签库)Struts2 Taglib 抽象了不同表示技术,现在 Struts2 主要支持三种表示技术:JSPFreeMarker 和 Velocity。
但部分的 Tag 在三种表示技术下都可以使用,但是也有部分只能在某一种情况下使用。
Tab 可以分为两类:通用标签和 UI 标签。
4.1 节 通用标签通用标签用来在页面表示的时候控制代码执行的过程,这些标签也允许从 Action 或者值堆栈中取得数据。
例如地域,JavaBeans,URLs,和 action。
控制标签控制程序执行,例如:if,elseiterator数据标签管理数据的取得和创建,例如:bean,pushi18n控制标签if 标签描述 If 标签用来控制基本的条件处理流程,通常和 else 标签或者 elseif 标签连用。
参数名字 是否必须 默认值 可否使用表达式 类型 描述id 否 是 String 用来表示该元素,对于 UI 和 Form 标签来说直接转变 为 HTML id 属性test 是 是 Boolean 用来决定是否显示标签内 部内容的表达式 例子lts:if testquotfalsequotgt ltdivgtWill Not Be Executedlt/divgtlt/s:ifgtlts:elseif testquottruequotgt ltdivgtWill Be Executedlt/divgtlt/s:elseifgtlts:elsegt ltdivgtWill Not Be Executedlt/divgtlt/s:elsegtelseIf 标签参考 if 标签else 标签参考 if 标签append 标签描述用来做 iterator 标签的辅助,将不同 iterator 中的内容合在一个 iterator 中。
参数名字 是否必须 默认值 可否使用表达式 类型 描述id 否 是 String 用来保存结果 iterator 的 对象在 value context 中的 名字。
例子Action 类public class AppendIteratorTagAction extends ActionSupport private List myList1 private List myList2 private List myList3 public String execute throws Exception myList1 new ArrayList myList1.addquot1quot myList1.addquot2quot myList1.addquot3quot myList2 new ArrayList myList2.addquotaquot myList2.addquotbquot myList2.addquotcquot myList3 new ArrayList myList3.addquotAquot myList3.addquotBquot myList3.addquotCquot return quotdonequot public List getMyList1 return myList1 public List getMyList2 return myList2 public List getMyList3 return myList3 标签使用lts:append idquotmyAppendIteratorquotgt lts:param valuequotmyList1quot /gt lts:param valuequotmyList2quot /gt lts:param valuequotmyList3quot /gtlt/s:appendgtlts:iterator valuequotmyAppendIteratorquotgt lts:property /gtlt/s:iteratorgt generator 标签(
JSP Tag)描述从 val 属性生成一个 iterator。
参数例子例 1:生成一个简单的 iterator,并且使用 iterator 标签打印出内容。
lts:generator valquotaaabbbcccdddeeequotgt lts:iteratorgt lts:property /gtltbr/gt lt/s:iteratorgtlt/s:generatorgt例 2:生成一个 iterator,使用 count 属性。
因为 count 属性值为 3,所以只有前三个内容(aaabbbccc)在生成的 iterator 中。
Generate an iterator with count attributelts:generator valquotaaabbbcccdddeeequot countquot3quotgt lts:iteratorgt lts:property /gtltbr/gt lt/s:iteratorgtlt/s:generatorgt例 3:生成 iterator,使用了 id 属性,之后生成的对象放在 pageContext 中,可以通过指定的 id来访问。
lts:generator valquotaaabbbcccdddeeequot countquot4quot separatorquotquot idquotmyAttquot /gtlt Iterator i Iterator pageContext.getAttributequotmyAttquot whilei.hasNext String s String i.nextgt lt s gt ltbr/gtlt gt例 4:生成 iterator,使用 converter 属性,这里的 convertor 仅仅将每一个对象添加了一个quotconverter-quot前缀。
lts:generator valquotaaabbbcccdddeeequot converterquotmyConverterquotgt lts:iteratorgt lts:property /gtltbr/gt lt/s:iteratorgtlt/s:generatorgt
源码教程下载就到
源码网:http://www.codepub.com/public class GeneratorTagAction extends ActionSupport .... public Converter getMyConverter return new Converter public Object convertString value throws Exception return quotconverter-quotvalue ...iterator 标签描述迭代处理一个 java.util.Connection 或者 java.util.Iterator 对象参数名字 是否必须 默认值 可否使用表达式 类型 描述id 否 是 String Id,status 否 否 是 Boolean 如果指定,在循环的过程中 会保留一个 IteratorStatus 类型的变 量,该变量用来查询当前迭 代的状态value 否 是 String 被迭代的对象例子例 1:lts:iterator valuequotdaysquotgt ltpgtday is: lts:property/gtlt/pgtlt/s:iteratorgt例 2:lts:bean namequotorg.apache.struts2.example.IteratorExamplequot idquotitquotgt lts:param namequotdayquot valuequotfooquot/gt lts:param namequotdayquot valuequotbarquot/gtlt/s:beangtltp/gtlttable borderquot0quot cellspacingquot0quot cellpaddingquot1quotgtlttrgt ltthgtDays of the weeklt/thgtlt/trgtltp/gtlts:iterator valuequotit.daysquot statusquotrowstatusquotgt lttrgt lts:if testquotrowstatus.odd truequotgt lttd stylequotbackground: greyquotgtlts:property/gtlt/tdgt lt/s:ifgt lts:elsegt lttdgtlts:property/gtlt/tdgt lt/s:elsegt lt/trgtlt/s:iteratorgtlt/tablegt例 3:lts:iterator valuequotgroupDao.groupsquot statusquotgroupStatusquotgt lttrclassquotlts:if testquotgroupStatus.odd true quotgtoddlt/s:ifgtlts:elsegtevenlt/s:elsegtquotgt lttdgtlts:property valuequotnamequot /gtlt/tdgt lttdgtlts:property valuequotdescriptionquot /gtlt/tdgt lttdgt lts:iterator valuequotusersquot statusquotuserStatusquotgt lts:property valuequotfullNamequot /gt lts:if testquotuserStatus.lastquotgtlt/s:ifgt lt/s:iteratorgt lt/tdgt lt/trgt lt/s:iteratorgtmerge 标签(同 append?)描述参数例子sort 标签(
JSP-Tag)描述 对一个可以迭代的对象进行排序操作。
参数名字 是否必 默认 可否使用表 类型 描述 须 值 达式Comparator 是 是 java.util.Comparator 排序用的比较器Source 否 是 String 排序对象例子例 1:lts:sort comparatorquotmyComparatorquot sourcequotmyListquotgt lts:iteratorgt lt-- do something with each sorted elements --gt lts:property valuequot...quot /gt lt/s:iteratorgtlt/s:sortgt例 2:lts:sort idquotmySortedListquot comparatorquotmyComparatorquot sourcequotmyListquot /gtlt Iterator sortedIterator Iterator pageContext.getAttributequotmySortedListquot for Iterator i sortedIterator i.hasNext // do something with each of the sorted elements gtsubset描述递归 iterator 的一部分参数名字 是否必 默认 可否使 类型 描述 须 值 用表达 式count False 是 Integer Iterator 中被 递归的一部分 的 item 的数量Decider 否 是 org.apache.struts2.util. 用来判断 SubsetIteratorFilter.Decider iterator 中的 item 是否包含 在最终的 subset 内部Source 否 是 String Iterator 的对 象Start 否 是 Integer 开始位置例子Java 类
源码教程下载就到
源码网:http://www.codepub.com/public class MySubsetTagAction extends ActionSupport public String execute throws Exception l new ArrayList l.addnew Integer1 l.addnew Integer2 l.addnew Integer3 l.addnew Integer4 l.addnew Integer5 return quotdonequot public Integer getMyArray return a public List getMyList return l public Decider getMyDecider return new Decider public boolean decideObject element throws Exception int i Integerelement.intValue return i 2 0true:false lt-- s: List basic --gt lts:subset sourcequotmyL.