??xml version="1.0" encoding="utf-8" standalone="yes"?> 注意的是如果使用Carlender来保存时?因ؓ上面要求传入的是Data对象Q因此需要用Carlender.getTime()Ҏ <ww:text name="'global.format.date'"> q里使用的是<ww:param/>标签来传递参敎ͼ虽然也可以?<ww:text name="'format.date'" value0= "'birthday.time()'"/> 用value0属性的说明Q?br />
大家可以扑ֈtext标签的源代码,在com.opensymphony.webwork.views.jsp.ui.TextTag中: 考虑目前在项目中使用最多的是显C附件大?定义以下格式: 如action有方?br />
public long getFilesize(); q回的大是以byte为单位,在显C时通常是以k或M昄 比较遗憾的是g没有办法在资源文件中q行q个/1024的运,试过{0/1024,number,##0.00'K'} 无法解析。只好在jsp里面?value="filesize/1024"来计实际倹{不知道q里有没有别的更好的实现方式Q?br />
前言Q大概在d6月的时候,我们团队开始用webwork来替代strutsQ刚开始大安没有l验Qؓ了格式化输出旉和数字,惛_了很多现在看来笨W的d的方法。后来俺扑ֈ了这个方法,试验了一下之后发了下面这个emaill了team member, 今天一位同事问赯个问题,ZC千计的已发送邮件中扑ֈ了这个东西,x军_整理出来。给大家分n一下,Zl我自己做个备䆾Q呵呵,后者基本上是俺写blog的一个重要用途?br />
分n一个在WebWork中如何格式化昄数字和日期的ҎQ?
具体的做法这里有详细的说明:
http://wiki.opensymphony.com/display/WW1/How+to+format+dates+and+numbers?showComments=true
下面是项目中推荐使用的时间格?
#format
global.format.date={0,date,yyyy-MM-dd}
global.format.time={0,date,HH:mm:ss}
global.format.datetime={0,date,yyyy-MM-dd HH:mm:ss}
从Carlender中获取Date:
<ww:param value="'birthday.time()'"/>
</ww:text>
但是后面的这个方法在webwork的新版本中已l被要求不要使用Q大家还是尽量?<ww:param/>标签
public void setValue0(String aName) {
LOG.warn("The value attributes of TextTag are deprecated.");
value1Attr = aName;
}
对于数字的格式化Q这里有两个参考:
global.format.percent = {0,number,##0.00'%'}
global.format.money = {0,number,$##0.00}
global.format.size.k={0,number,##0.00'K'}
global.format.size.m={0,number,##0.00'M'}
global.format.size.g={0,number,##0.00'G'}
则显C时:
<ww:text name="'global.format.size.k'">
<ww:param value="filesize/1024"/>
</ww:text>
<ww:text name="'global.format.size.m'">
<ww:param value="filesize/1048576"/>
</ww:text>
<ww:text name="'global.format.size.g'">
<ww:param value="filesize/1073741824"/>
</ww:text>
恩,Z再介l一下当时俺们team惛_来的W笨的方法,不要见笑啊,以上面的昄文g大小ZQ想到的Ҏ大致有以下几U:
1. 直接输出字符串的l果
getFileSizeString(), 在里面用java代码判断大小q生成诸?1.2k", "31.2M"的结果返?br />
2. 提供多个函数
getFileSizeByte(), getFileSizeK(), getFileSizeM(), getFileSizeG()
3.使用javascript在client端格式化
<script type = "text/javascript">
var resultNum = <ww:property value="fileSize" />;
resultNum = format(resultNum);//cM的函?nbsp;
document.write(resultNum);
</script>
4.使用自定义标{?/p>
--------------------------------------------------------------------------------------------------------------
struts2中格式化输出数字和日期的Ҏ
资源文g
......
#格式化数字或旉输出
global.format.date={0,date,yyyy-MM-dd}
global.format.money={0,number,K?#0.00 '?}
......
JSP文g
格式化时? <s:text name="global.format.date"><s:param value="publishTime"></s:param></s:text>
格式化数? <s:text name="global.format.money"><s:param value="price"/></s:text>
用框枉?
问题Q提交空表单Ӟ出错信息会不断的累加
解决Ҏ:
spring2.0只将action配置中加?lt;xxx scope="prototype">OK?/span>
chain --> 链接到另一个webwork action
dispathc --> 标准Servlet分发器的包含操作(默认?
freemarker --> 生成一个FreeMarker模板
httpheader --> 发送处理HTTP header的命?br>jasper --> 生成一个JasperReports报表
redirect --> 发送HTTP重定?br>velocity --> 生成一个Velocity模板
xalt --> 通过XSL译处理XML
webwork中的默认interceptor(基础)
chain --> 参C一个action复制到另外一个action
component --> 为action应用Ioc的逻辑处理
conversionError --> 如果发生了类型上的错?则增加相应的字段错误信息
execAndWait --> 生成一个独立的U程,以执行action
fileUpload --> 讄上传文g为action文g(File对象)
logger --> 记录action执行的v始时?br>model-driven --> action模型压入值栈?br>params --> HTTP参数值应用至action实例?br>prepare --> 调用action的prepare()Ҏ
servlet-config --> 提供寚w用HTTP对象(h,响应)的访?br>static-params --> action映射讑֮的参数应用到action实例?br>timer --> 控制action的定时执?br>token --> 防止表单重复提交的基本实?br>toen-session --> 防止表单重复提交的高U实?br>validation --> 校验action中的字段?br>workflow --> 如果发生错误则自动返回INPUTq个result code对应的视?/p>
webwork中的默认interceptor(范例)?br>
defaultStack --> 基础intercetor?br>validationWorkflowStack --> 使用validation?workflow q两个interceptor 的范?br>fileUploadStack --> 使用fileUpload interceptor的范?br>componentStack --> 使用component(Ioc) interceptor的范?br>modelDrivenStack --> 使用model-driven interceptor的范?br>chainStack --> 使用chain interceptor的范?br>execAndWaitStack --> 使用execAndWait interceptor的范?br>completeStack --> 使用了chain model-driven Ioc fileUpload validation和workflow的完整inerceptor?br> l大部分情况?要以选择它作Z的interceptor?br>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "xwork-1.0.dtd" >
<xwork>
<include file="webwork-default.xml"></include>
<package name="default" extends="webwork-default">
<default-interceptor-ref name="completeStack"/>
<action name="hello" class="dgut.ke.action.HelloWorld">
<result name="success">/hello.jsp</result>
<result name="input">/name.jsp</result>
</action>
</package>
</xwork>
在这里有一个关键的地方需要注?xwork.xml包含了一个名为webwork-default.xml
的文?q样做是Z保证你可以用所有构ZXWork之上的WebWork附加Ҏ?webwork-default.xml
包含了让WebWork正常q行的标准配|?因此包含它是十分重要?没有q个文g,WebWork无法正确的被
配置,当然E序也无法正常运行了.我们不需要自己创建webwork-default.xml文g,因ؓ它已l包含在
WebWork的JAR文g中了.
webwork.properties配置文g
与把xwork.xml攑֜WEB-INF/classes下一?我们q需要在q个目录中增加一个名为webwork.properties
文g.其内容ؓ
webwork.tag.altSyntax = true
#解决中文q
webwork.i18n.encoding = GBK