??xml version="1.0" encoding="utf-8" standalone="yes"?>
之前?U方?
W一U是修改struts2 tag的源代码.
比如http://jolestar.javaeye.com/blog/160360
W二U就是彻底妥?在action里面把list bean转成数组,赋给checkboxlist的value属?
q两Usolution都不是那么优?作ؓ一个有房贷没希望的IT民工我不问自己:
怎么能对自己的要求这么低? 怎么能应付了事呢?
L?研究了下ognl的语?l于让我扑ֈ了一U方便的写法.
JavaBean
Action中初始化allOpList和myOpList.
前台jsp用strtus2标签生成checkboxlist
checkboxlist标签用allOpList的内容生成checkbox, q且用myOpList的值选中默认.
q且当页面提交的时?又能自动把checkbox的选中情况,赋给myOpList.Operate.id属?
q样从后到前到再到后,全都是用list beand?用法l一,不要转换,全部操作的是bean而不是数l?
_֍在于myOpList.{#this.id}q个ognl表达?自动生成[4, 11]q种格式的数l?
引申一?ognl的语法强大到可以myOpList.{?#this.enable > 0}来做qo,看着有点Jquery的味?非常好用.
有同志会?q种qo没有什么意?不如在后台sql里面?
假设一个应用场?
全部用户信息是放在cache里面的list,Ҏ前一个页面来qo男女,然后昄.
q时候这个过滤表辑ּ发挥作用了,不用您在后台一个一个过滤重新组装list?
userInfoist.{?#this.sex > 0}
z而优?q下能过自己q关?
]]>
其中也碰C一些bt的需求,l合目把一些小技巧和大家分n一下(一? ColdFusionl验的菜鸟被赉子上架的搞了几天心得Q如果你认ؓ单的可笑Ƣ迎指教Qؕ喷党L行)
先来点小?br />
用惯了jqueryQ直接无视ColdFusion的ajax。既然用jqueryQ当然希望后台返回json格式的数据?br />找了一下coldfusion 8已经提供非常方便的api?br />
wherestr="#wherestr#" returnVariable="tableSum"/>
<cfscript>
writeOutput(SerializeJSON(#tableSum#));
</cfscript>
PreserveSingleQuotes(name)QColdFusionZ安全,会自动{义参C的特D字W。特D情况下我们不希望他q样做,可以用上面的方法?br />
<cfif Right(ListGetAt(nameList,LoopCount),2) eq "sp">
以上只是Z再来一个大菜:动态列Q表根{以下是化的代码
<CFOUTPUT query="csmSum">
<cfloop index = "LoopCount" from="1" to="#ListLen(nameList)#">
<cfset tmp =NumberFormat(Evaluate("querylist." & ListGetAt(nameList,LoopCount)),0.00)>
<td class="num">#tmp#</td>
</cfloop>
</CFOUTPUT>
ColdFusion只能Ҏ一个变量名U取取查询结果的字段Q没有根据位|或者字W串取,非常不爽?br />
核心是?span style="color: rgb(0, 0, 255);">EvaluateҎ一个字W串d态构造一个变量,然后Ҏq个变量取出query中的列?br />个这个字W串可以从一个list里面动态@环取出来再拼凑而成
而这个list可以从一些地Ҏ询或者传递过来?br />所以表格就动态了h?br />
]]>
]]>
]]>
XML2Bean
XStream xStreamt
=
new
XStream(
new
DomDriver());
xStreamt.alias(
"
config
"
, ConnectConfig.
class
);
//
指定节点对应的class
ConnectConfig cfgt
=
(ConnectConfig) xStreamt.fromXML(str);
//
str是接收到的xml字符Ԍ注意Qxml里面的节点和bean的属性一定要能对应上Q否则会抛异?/span>
System.out.println(cfgt.getAdminEmail());
Bean2XML
XStream xStream
=
new
XStream(
new
DomDriver());
xStream.alias(
"
config
"
, ConnectConfig.
class
);
//
指定class对应的节点名Uͼ默认是完整package名称Qclass名称
String str
=
xStream.toXML(cfg);
//
str为生成的xmlQgؓI的属性不生成节点?/span>
System.out.println(str);
]]>
<param-name>webAppRootKey</param-name>
<param-value>webApp.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>600000</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
然后log4j.properties里面指定文g路径的时候就可以?{webApp.root}/
log4j.appender.info.File=${webApp.root}/WEB-INF/logs/info.log
同时你的web目必须?WEB-INF/logsq个目录
]]>
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = INFO
log4j.appender.info.append=true
log4j.appender.info.File=${webApp.root}/WEB-INF/logs/info.log
log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.debug.datePattern='.'yyyy-MM-dd
log4j.appender.debug.Threshold = DEBUG
log4j.appender.debug.append=true
log4j.appender.debug.File=${webApp.root}/WEB-INF/logs/debug.log
log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = ERROR
log4j.appender.error.append=true
log4j.appender.error.File=${webApp.root}/WEB-INF/logs/error.log
]]>
]]>
this.addChildAt(sceneHolder, 0);
var snapShotBMD:BitmapData=ImageSnapshot.captureBitmapData(myLabel);
var myBitmap:Bitmap = new Bitmap(snapShotBMD);
sceneHolder.addChild(myBitmap);
<mx:Label id="myLabel" x="187" y="86" text="Hermit" visible="false"/>