Struts2标签中 sif test 判断String类型的对象属性值和单字符是否相等的问题
Struts2学习之二--Struts2标签介绍

Struts2学习之二--Struts2标签介绍热12已有 14625 次阅读 2009-07-12 18:53[顶]3G移动--Android开发工程师全能班(转) Struts2学习之二--Struts2标签介绍在上一篇文章《为Struts 2.0做好准备》中,我过于详细地介绍了Struts 2.0开发环境和运行环境的配置,所以,本文很少涉及的以上两方面的细节。
如果,您看完《为Struts 2.0做好准备》后,还有什么不明白,或者没法运行文中例子,请联系我。
我的E-MAIL:Max.M.Yuan@。
在介绍常用标志前,我想先从总体上,对Struts 1.x与Struts 2.0的标志库(Tag Library)作比较。
分类将标志库按功能分成HTML、Tiles、Logic和Bean等几部分严格上来说,没有分类,所有标志都在URI为“/struts-tags”命名空间下,不过,我们可以从功能上将其分为两大类:非UI标志和UI标志表达式语言(expression languages)不支持嵌入语言(EL)OGNL、JSTL、Groovy和Velcity以上表格,纯属个人总结,如有所不足或错误,请不吝指正好了,我要开始介绍“常用”(这里所谓的“常用”,是指在已往工作中使用Struts里经常用到的)的标志了。
1.非UI标志o if、elseif和else描述:执行基本的条件流转。
参数:名称必需默认类型描述备注test 是Boolean 决定标志里内容是否显示的表达式else标志没有这个参数id 否Object/String 用来标识元素的id。
在UI和表单中为HTML的id属性例子:<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Condition Flow</title></head><body><h3>Condition Flow</h3><!--这里有点小技巧:本来可以用#[0]来获得,请求中name的值。
struts2标签大全详解

详细的说明了struts2所有标签由整理版权属 以及原作者。
由于标签太多难做目录索引,如果你觉得有目录索引更好,请到/p/myjdemo/downloads/list 下载CHM版本的Struts2标签详解,谢谢。
aa标签创建一个HTML超链接,等价于HTML 的<a href=""....示范代码:<s:a href="login.action">登陆</s:a>action使用action标签可以允许在JSP页面中直接调用Action,因为需要调用Action,故可以指定需要被调用Action的name以及namespace。
如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果(视图支援)包含到本页面中来。
action标签的属性:id:可选属性,该属性将会作为该Action的引用IDname:必填属性,指定该标签调用哪个Actionnamespace:可选,指定该标签调用的Action所在的namespace. executeResult:可选,指定是否要将Action的处理结果页面包含到本页面。
默认是false,即不包含ignoreContextParams:可选,它指定该页面中的请求参数是否需要传入调用的Action、默认是false,即将本页的请求参数传入被调用的Action。
下面是本示例应用中的Action类,包含连个处理逻辑。
代码如下public class TagAction extednds ActionSupport{//封装用户请求参数的author属性private String author;//author的get和set的方法,省略……public String execute() throws Exception{return "done";}public String login() throws Exception{ServletActionContext.getRequest().setAttribute("author",getAuthor()); return "done";}}上面的Action类包含两个处理逻辑,可以在struts.xml文件中通过指定method属性来将该Action类映射成两个逻辑Action。
struts2笔记之struts:property标签

struts2笔记之struts:property标签1、访问ActionContext资源request,session,parameters(1)、action实现ServletRequestAware接⼝,并且重写setServletRequest()// request对象,不⽤设置get⽅法,只须重写set⽅法private HttpServletRequest request;@Overridepublic String execute() throws Exception {// TODO Auto-generated method stub...........request.setAttribute("list", list);request.setAttribute("dPage", dPage);...........}@Overridepublic void setServletRequest(HttpServletRequest arg0) {// TODO Auto-generated method stubthis.request = arg0;}(2)jsp调⽤request中的值或⽅法<s:property value="#request.dPage.get()" default="10"/><s:property value="#request.list" default="10"/2、访问Action值栈中的对象或⽅法或对象的属性或对象的⽅法:(要求get-set⽅法)2.1 要求action中的对象有get -set⽅法,⽽且对象名最好不要有⼤写字母,容易出错2.2 如果要访问对象的其他属性或⽅法,这写属性⽅法也要get-set2.3 ⽰例:<s:property value="attrName"/><s:property value="methodName()"/><s:property value="dpage.currentPage" default="0"/><s:property value="dpage.getpageCount()" default="0"/>12,投影<s:property value="listName.{?#this.age==1}"/><s:property value="listName.{^#this.age>1}"/><s:property value="listName.{$#this.age==1}"/><s:property value="listName.{$#this.age==1}.{age}==null"/><s:property value="[0]"/>值栈中的对象Done!。
【黑马程序员】 Struts2的数据验证

【黑马程序员】Struts2的数据验证1. Struts中的数据验证用户的输入验证,必须做,且工作量巨大。
1、验证的方式客户端验证:javascript服务端验证:逻辑验证(我们的代码)注意:如果客户端和服务端二选一的话,服务器端的不能省。
实际开发中:客户端+服务端2.1、编程式验证前提:动作类必须继承ActionSupport 在代码中编写验证规则。
所有编程式验证的弊端:硬编码。
2.1.1针对动作类中的所有动作方法进行验证:在动作类中覆盖public void validate()方法。
该验证方式会验证动作类的所有方法,给不需要验证的方法需要加上@SkipValidation注解public void validate() {//在执行动作方法前,会先执行该验证的额方法!(validate)if(StringUtils.isEmpty(user.getName())){//针对不正确的情况,往map中存放消息即可!当该map为空时,证明验证通过!addFieldError("name", "用户名不能为空!");}2.1.2针对动作类中的某个动作方法进行验证validation方法遵守书写规范。
validate+动作方法名(首字母大写) public String insertUserOrUpdate() throws Exception {return SUCCESS;}//该验证只对insertUserOrUpdate做验证!public void validateInsertUserOrUpdate(){addFieldError("name", "用户名不能为空!");}2.2、声明式验证(推荐)通过编写验证规则的xml文件。
需要验证时,编写xml文件,不要验证,就不写。
优势:解决了2.1编程式验证的弊端2.2.1针对动作类中的所有动作进行验证:在动作类所在的包中,建立一个ActionClassName-validation.xml的文件<?xml version="1.0" encoding="UTF-8"?><!-- 约束:在xwork-core包中的xwork-validator.dtd文件中--><!DOCTYPE validators PUBLIC"-//Apache Struts//XWork Validator 1.0.3//EN""/dtds/xwork-validator-1.0.3.dtd"><validators><!-- 要验证的字段:name属性和form表单一致 --><field name="name"><!--指定验证器,在xwork-core包中的com.opensymphony.xwork2.validator.validators.default.xml文件中 requiredstring是内置的验证器,默认会去掉首尾的空格,验证null和""--><field-validator type="requiredstring"><!-- 提示信息 --><message>请输入用户名</message></field-validator></field></validators>2.2.2针对动作类中的某个动作进行验证:在动作类所在的包中建立一个xml文件,名称为ActionClassName-ActionName-validation.xml。
struts2标签详解[1]
![struts2标签详解[1]](https://img.taocdn.com/s3/m/4432e174f46527d3240ce0e5.png)
要在jsp中使用Struts2的标志,先要指明标志的引入。
通过jsp的代码的顶部加入以下的代码:<%@taglib prefix="s" uri="/struts-tags" %>If elseif else描述:执行基本的条件流转。
参数:例子:<s:set name="age" value="61"/><s:if test="${age > 60}">老年人</s:if><s:elseif test="${age > 35}">中年人</s:elseif><s:elseif test="${age > 15}" id="wawa">青年人</s:elseif><s:else>少年</s:else><s:set name="name" value="<%="'"+request.getParameter("name")+"'"%>"/><%System.out.println(request.getParameter("name"));%><s:if test="#name=='zhaosoft'">zhaosoft here</s:if><s:elseif test="#name=='zxl'">zxl here</s:elseif><s:else>other is here</s:else>Iterator(迭代)描述:用于遍历集合(java.util.Collection)或枚举值(java.util.iterator) 参数I18n(国际化操作)描述:加载资源包到值堆栈。
struts2用siftest判断属性和字符串相等时注意双引号和单引号的使用以及%{}${}%{#}的使用

struts2用siftest判断属性和字符串相等时注意双引号和单引号的使用以及%{}${}%{#}的使用字符串N一定要用“”双引号包含,从test的包含则用单引号' ’,如果相反,则不能正确判断该属性是否与该字符串相等。
正确:<s:if test='activityBean.searchForce=="N" '>错误:<s:if test="activityBean.searchForce=='N' ">因为java是强类型语言,单引号表示char类型,只能赋给一个字符给char类型,而双引号则表示String类型所以我的activityBean.searchForce 属性是String类型,那么N必须要用双引号/*******************************************例如这个语句要判断struts堆栈里systemSettingModel.settingValue 是否等于"A"写成<s:if test="systemSettingModel.settingValue =='A'">...</s:if>是不对的。
这样A被认为是字符,而systemSettingModel.settingValue是单字符的字符串,不匹配应写成<s:if test='systemSettingModel.settingValue == "A"'>。
</s:if>或<s:if test="systemSettingModel.settingValue == \"A\"">... </s:if> 参考:/2.1.8.1/docs/why-wont-the-if-tag-evaluat e-a-one-char-string.html 另外systemSettingModel.settingValue 的值可以这样取得${systemSettingModel.settingValue}<s:property value="systemSettingModel.settingValue"/> <s:propertyvalue="#request.systemSettingModel.settingValue"/> #表示不在struts堆栈里,没有#表示从struts堆栈里取/***********************************Struts2堆栈struts2中的标签s:a 中的href 什么时候使用“# ”什么时候该用“%{ }”什么时候该用“%{# }”什么时候用“”s:select 中的list 什么时候使用“# ”什么时候该用“%{ }”什么时候该用“%{# }”什么时候用“”s:if 中的test 什么时候使用“# ”什么时候该用“%{ }”什么时候该用“%{# }”什么时候用“”s:iterator 中的value什么时候使用“# ”什么时候该用“%{ }”什么时候该用“%{# }”什么时候用“”s:checkboxlist 中的list 什么时候使用“# ”什么时候该用“%{ }”什么时候该用“%{# }”什么时候用“”Struts2中有值堆栈和堆栈上下文的概念,你用<s:debug />可以看出. S标签中用#可以取出堆栈上下文中的存放的对象. 用%{}可以取出存在值堆栈中的Action对象, (ValueStack 属于request域)直接调用它的方法.例如你的Action如果继承了ActionSupport .那么在页面标签中,用%{getText('key')}的方式可以拿出国际化信息. %{#},这是JSP2.1最新规范中的语法,是Struts2为其解决兼容性问题而写成%{#}的在域对象中使用%{#}比如%{#erName}将获得user对象的userName属性值%{}强调的是从你设定的root点取%{}用于计算表达式如%{10+20}结果将输出30如%{"a"+"b"}结果将输出"ab"#通常强调从上下文取如#[0]等价于request.getParameter("name")如#等价于session.getAttribute("name")如#等价于request.getAttribute("name") %{#}仍然用于计算表达式,只不过操作元可以是变量如先定义一个变量<s:set name="age" value="%{25}"/>则%{#age}将输出25,也可以省略"#",写为%{age}若将age加10,可这么写:%{#age+10},将输出30.不能省略"#"。
struts2资料2

Struts2 标签库详解Struts2标签库包括:OGNLStruts2标签分类控制标签:(if, elseif,else, iterator, append, merge, generator, subset, sort)数据标签:(bean, param,date, debug, include, set, url, push)OGNLObject-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(ExpressionLanguage,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性:,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
Struts2默认的表达式语言是OGNLOGNL的符号--#:1、访问OGNL上下文和Action上下文,#相当于ActionContext.getContext() .2、构造Map用于过滤和投影(projecting)集合?——所有匹配选择逻辑的元素^——只提取符合选择逻辑的第一个元素$——只提取符合选择逻辑的最后一个元素范例:<s:iterator value="#{'china':'中国','usa':'美国','e':'俄国'}" var="c"><s:property value="#c.key"/>--<s:propertyvalue="#c.value"/><br/></s:iterator>范例:<s:property value="#attr.list.{sname}[0]"/><s:property value="#attr.list.{$#this.sid== 3}.{sname}[0]"/>支持对象方法调用:<s:property value="#attr.p.doSomeThing('李四')"/>调用保存在pageContext中的Student对象的doSomeThing()[N]语法:从ValueStack的第N个位置开始取值top关键字:取出最顶端的对象示例::<s:push value="'阿拉伯联合酋长国'"><s:property value="[0].top"/></s:push>从ValueStack中的第0个位置开始取出最顶部的对象,返回为”阿拉伯联合酋长国”Struts2标签分类1.分类:Struts2标签库:用户界面标签库(表单/非表单标签库),非用户界面标签库(控制标签库,数据访问标签库),ajax支持标签库2.导入taglib<%@taglib prefix=“s”uri=“/struts-tags” %>控制标签1、条件标签if…elseif…else主要属性:: test : 测试条件范例:<%! Random rnd = newRandom(); %><% int n = rnd.nextInt(200);pageContext.setAttribute("n", n); %><s:if test="#attr.n % 7 == 0">恭喜,您中了一等奖! </s:if><s:elseif test="#attr.n % 5 ==0">恭喜,您中了二等奖! </s:elseif><s:else>欢迎惠顾!</s:else>2、迭代标签iterator用于循环数组,集合和Map属性:value:数组,集合或Mapvar:当前元素status:当前元素的状态index,count,even,odd,first,last示例:遍历List<s:iterator value="{'中华人民共和国', '美利坚合众国', '阿拉伯联合酋长国'}" var="cur"status="st"><s:property value="#st.count"/><s:property value="#cur"/><br/></s:iterator>遍历Map<s:iterator value="#{1: '中国', 2: '美国', 3: '日本'}" var="cur"><s:property value="#cur.key"/><s:property value="#cur.value"/><br/></s:iterator>3、集合合并标签append和merge将多个集合合并成一个集合属性::var - 新集合的名称示例:<s:appendvar="newCollection"><s:param value="{'中国', '美国', '日本'}"></s:param><s:param value="{'德国', '泰国', '新加坡'}"></s:param></s:append><s:iterator value="#newCollection"var="cur"><s:property value="#cur"/><br/></s:iterator>注:merge用法和append相同,结果的组织不一样.4、字符串分割标签generator将一个字符串按照指定分隔符分割成一个字符串数组separator: 分隔符val(value): 字符串count:字符串數組中元素個數示例:<s:generator separator=","val="'中,华人,民共和,国'" var="arr"/><s:iterator value="#arr"var="cur"><s:property value="#cur"/><Br/></s:iterator>5、集合子集标签subset从集合中取出一个子集,注意:子集被放在值栈的顶部,subset标签执行完后子集自动移除属性::source: 集合start: 起始索引count: 子集中元素个数示例:<s:subset source="{'中国', '美国', '日本', '德国', '泰国', '新加坡'}" start="1"count="3"><s:iterator var="cur"><s:property value="#cur"/></s:iterator></s:subset>6、排序标签sort根据定义的排序规则,对集合中的元素进行排序,排序后生成的新的集合放在值栈顶部,标签结束后自动删除.属性::comparator: 实现Comparator的类source: 集合示例:<s:bean name="com.aptech.sorted.LengthSorted"var="ls“/><s:sort comparator="#ls"source="{'中1','88w','777','6666'}"><s:iterator><s:property/><br/></s:sort>数据标签1、设置变量标签set用于设置一个新变量,并将新变量放入指定的作用域中属性:Var: 新变量的引用Value:值示例:<s:set var="v1"value="'中华人民共和国'" scope="page"></s:set><s:property value="#attr.v1"/>注:如果不指定,默认放在Stack Context中2、栈顶置值标签push将某个值置于值栈的顶部,标签结束后,将从值栈中移除.属性:value: 即值示例:<s:push value="'中华人民共和国'" ><s:property/></s:push>3、javabean创建标签bean用于创建javabean的实例,如果设置了var值,则存于Stack Context,否则,标签结束后自动移除. 属性:name: javabean类名(带包)var: 名称示例:<s:bean name="com.aptech.entity.Student"var="stu"><s:param name="sid">1</s:param><s:param name="sname">张三好</s:param><s:param name="sbirthday">2009-9-9</s:param></s:bean><s:property value="#stu.sbirthday"/>4、日期格式化标签date格式化日期并输出属性:name:日期format:格式化字符串示例:<%pageContext.setAttribute("d", new Date()); %><s:date name="#attr.d"format="yyyy年MM月dd日HH时mm分ss秒"/> 5、调试标签debug用于当前环境下Value Stack和stackcontext中保存的数据6、资源包含标签include用于将一个html,jsp或servlet包含到当前页面中,使用param传递参数属性:value:包含页面名称示例:<s:include value="MyHtml.html"></s:include>7、URL生成标签url生成URL地址,可以通过param标签传递请求参数,如果参数为中文,自动编码属性:value: url值action: action名称,自动加上.action示例:<s:url value="control.jsp"var="url"><s:param name="id">中华人民共和国</s:param></s:url><a href="<s:propertyvalue="#url" />">链接</a><s:url action="test"var="url2"></s:url><s:property value="#url2"/>8、数据输出标签property用于输出值栈,Stack Context中的数据属性:value:要输出的值如果输出值栈中的值,不用#如果输出Stack Context中的值,要用#如果省略value,表示取出值栈的栈顶对象输出总结OGNL是标签的基础,要理解OGNL的基本使用,在struts2中,OGNL必须和标签紧密配合控制标签包含一组条件判断标签和一组集合遍历和操作标签数据标签包含一组数据访问相关的标签。
struts2学习笔记2

Struts学习1.2一、类型转换a)可以继承DefaultTypeConverter或StrutsTypeConverter类,也可以直接实现TypeConverter接口b)直接实现TypeConverter接口(这里不对该方法进行着重理解)i.需要重写下面的方法convertValue(Map<String,Object> context, Object target, Member member, StringpropertyName, Object value, Class toType)c)继承DefaultTypeConverter类i.需要重写下面的方法convertValue(Map<String,Object> context, Object value, Class toType) ii.该方法的返回值就是Action类中的属性的值iii.参数value---String[]要转化的值,该值是字符串类型的数组,strus2底层用request.getParameterValues("属性名")iv.参数toType要转化的数据类型,这里是java.util.Date.class类型d)实现思路i.在上面的方法中判断value是否为空,并且length是否大于0,如果两个条件都满足,如果两者有一个不满足就返回nullii.再判断toType是否为空,如果为空则返回null,如果不为空,则要判断一下是否是我们要转换的类型(toType!=java.util.Date.class)如果不是,则返回nulliii.如果上面两个值都不为空,并且length也大于0,则开始判断value是否是String[](value instanceof String[])如果这个条件为true,我们再执行iv.遍历value字符串数组,开始我们的转换v.最后需要编写一个properties资源文件,该文件放置到和当前Action同一个包下,内容是:Key Value要转换的目标类型当前转换器所在的完整类路径二、文件上传a)首先我们知道Struts2中是利用apache上传组件来完成的文件上传功能,Struts2对该组件又进行了一次封装,所以用起来更加灵活,方便,简单b)主要的三个字段(提供getter和setter方法):i.[File Name]:File类型,通常是HTML页面中input的name属性的值,保存上传的临时目录下的文件---------File - the actual Fileii.[File Name]ContentType:String类型,必须是HTML页面中input的name属性的值+ContentType,保存了上传文件的类型---------String - the content type ofthe fileiii.[File Name]FileName:String类型,通常是HTML页面中的input的name属性的值+FileName,保存了上传文件的真实名称---------String - the actual name ofthe file uploaded (not the HTML name)c)有了以上的三个段,我们可以用ServletContext对象获取上传文件保存的目录i.ServletContext realPath =ServletActionContext.getServletContext().getRealPath("/upload");ii.通常apache上传组件中的IO包里的FileUtils工具类,利用该类下的copyFile()方法,我们可以将临时文件复制到实际目录下iii.copyFile(File srcFile, File destFile)该方法有两个参数,参数一:源文件,我们这里是三个主要字段的第一个FileName;参数二:该参数要一个File对象,我们可以这样写(new File(realPath ,[File Name]FileName))里面的第一个参数是要保存文件的目录,我们通过ServletContext获取到的,第二个参数是三个主要字段的第三个(真实的文件名称)d)最后上传成功后,再将保存的临时文件夹下的临时文件删除掉i.代码:[File Name].delete();e)配置Struts.xmli.在Action中要配置两个结果:<result name="success">/upload/success.jsp</result><result name="input">/upload/error.jsp</result> ii.其中第一行,表示程序运行成功时,转到success.jsp;第二行表示程序运行失败时,转到error.jspiii.更改临时文件的存放目录<constant name="struts.multipart.saveDir"value="D:/temp"></constant>iv.配置上传文件的总开关,这里的配置对当前web应用的所有的上传都有效,默认上传大小是2M<constant name="struts.multipart.maxSize"value="222097152"></constant>v.以上的配置是对全局生效的方式,以下来看一下对局部生效的方式:f)更改文件上传失败的提示:Key Valuestruts.messages.error.uploading 上传失败: {0}rge 文件太大: {0} "{1}" "{2}" {3}struts.messages.error.content.type.not.allowed 内容类型不允许: {0} "{1}" "{2}"{3}struts.messages.error.file.extension.not.allowed 扩展名不允许: {0} "{1}" "{2}" {3} 三、自定义拦截器a)要定义自定义拦截器,需要实现Interceptor接口,重写里面的三个方法,三个方法分别为:init()、intercept(ActionInvocation invocation)、destroy()这三个方法代表了拦截器的生命周期b)参数ActionInvocation: 代表一个给定动作的执行状态, 拦截器可以从该类的对象里获得与该动作相关联的Action对象和Result对象,在完成拦截器自己的任务之后,拦截器将调用ActionInvocation对象的invoke方法前进到Action处理流程的下一个环节 ActionInvocation:封装了程序运行上下文信息,[action result...]c)如:获取一些上下文的信息i.获取当前Action名称:invocation.getProxy().getActionName()ii.获取命名空间:invocation.getProxy().getNamespace()iii.获取当前方法:invocation.getProxy().getMethod()iv.获取代理对象:invocation.getProxy()d)在Struts.xml中配置拦截器i.在对应的包下申明一个<interceptors></interceptors>ii.在上面的<interceptors>标签内添加:<!--name属性:自定义拦截器的唯一名称--><interceptor name="limit" class="自定义拦截器完整类路径" /><!--name属性:自定义拦截器栈的唯一名称--><interceptor-stack name="limitStack"><!--name属性:把默认栈添加到自定义栈中--><interceptor-ref name="defaultStack"/><!--name属性:把自定义拦截器添加到自定义栈中--><interceptor-ref name="limit"/></interceptor-stack>iii.在<interceptors>标签后添加引用:<default-interceptor-ref name="limitStack"/>四、表单验证a)代码方式进行表单验证i.要利用Struts2中的内部机制来完成表单验证,需要在当前访问的Action类中重写validate()方法ii.在该方法中对需要验证的字段进行判断,如果不符合条件,则使用this关键字,调用addFieldError()方法,该方法有两个参数,第一个添加进去的字段名,用于在JSP或其它地方取值,第二个参数要一个字符串类型的提示语。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Struts2 用s:if test 判断String类型的对象属性值和单字符是否相等的问题Struts2 用s:if test 判断String类型的对象属性值和单字符是否相等的问题
首先,这里所指的单字符形如:Y,男。
有两种做法:
a. <s:if test='news.sfsecret=="是"'>
b. <s:if test="news.sfsecret=='是'.toString()">
解释如下:
因为java是强类型语言,单引号表示char类型,而双引号则表示String类型。
所以a中可以正常使用,而b中则需要用toString()方法将char类型转为String类型。
实际使用
(1) <s:iterator value="FunTypeList">
<input type="radio" name="<s:property
value='chartTypeList[#st.count-1].syntax'/>FunType" value="${dworder}"
<s:if
test="pieFunType.equals(dworder.toString())">checked="checked"</s:if> />${name}
</s:iterator>
(2)<input type="radio" name="roworCol" value="1" <s:if
test="roworCol.equals('1'.toString())">checked="checked"</s:if>/>
其中,pieFunType和roworCol为后台传过来的字符串。