Hidden组建会自动类型转换,所以如果要用Hidden抓建最好在赋值前先将值强制类型转换,不然会报类型转换错误,类似下面错误 Hidden的值获得后会自动在前面加上类型标示符。即 sp=S402880930ee096f2010ee0c052f50001 这点在开发的时候需要特别注意。
当在用
Tapestry4
的时候,要对其组件
GenericLink
的
URL
参数进行重新构建时,应
注意
的地方如下:
如
URL
为
MemberInformation
.
external?sp=
S
402880930ee096f2010ee0c052f50001
要注意的就是为红色的
“
S
”
,其后的
”402880930ee096f2010ee0c052f50001“
为要传递的参数值(如某会员的
32
位的
Id
),如果不加
“
S
”
则有可能(此例中一定会)会引发类型转化错误,因为当你不加
“
S
”
时,
Tapestry4
的
GenericLink
组件因为传递的参数值的前几位都是数字而认为参数值是数字类型的,其就会把参数值进行由字符转化为数字类型的操作,结果就出现
NumberFormatException
错误,如果
Tapestry
的此组件运行的机理不懂的话就很难找到出错的原因,笔者在此问题上也被其折磨了好几个小时,因此笔者在此提及,希望开发
Tapestry4
页面的同事在遇到此问题时少走弯路!
当出错时示例出错页面如下
:
An exception has occurred.
You may continue by restarting the session.
org.apache.hivemind.ApplicationRuntimeException
|
For input string: "402880930ee096f2010ee0c052f50001"
|
|
java.lang.NumberFormatException
|
For input string: "402880930ee096f2010ee0c052f50001"
|
Stack Trace: java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) java.lang.Integer.parseInt(Integer.java:456) java.lang.Integer.<init>(Integer.java:620) org.apache.tapestry.util.io.IntegerAdaptor.unsqueeze(IntegerAdaptor.java:54) org.apache.tapestry.util.io.DataSqueezerImpl.unsqueeze(DataSqueezerImpl.java:179) org.apache.tapestry.util.io.DataSqueezerImpl.unsqueeze(DataSqueezerImpl.java:199) $DataSqueezer_10ee41710c0.unsqueeze($DataSqueezer_10ee41710c0.java) org.apache.tapestry.services.impl.LinkFactoryImpl.extractListenerParameters(LinkFactoryImpl.java:181) $LinkFactory_10ee41710c2.extractListenerParameters($LinkFactory_10ee41710c2.java) org.apache.tapestry.engine.ExternalService.service(ExternalService.java:159) $IEngineService_10ee4171154.service($IEngineService_10ee4171154.java) org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:66) org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:248) org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60) $WebRequestServicer_10ee4171128.service($WebRequestServicer_10ee4171128.java) $WebRequestServicer_10ee4171124.service($WebRequestServicer_10ee4171124.java) org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56) $ServletRequestServicer_10ee417110a.service($ServletRequestServicer_10ee417110a.java) org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55) $ServletRequestServicerFilter_10ee4171106.service($ServletRequestServicerFilter_10ee4171106.java) $ServletRequestServicer_10ee417110c.service($ServletRequestServicer_10ee417110c.java) org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52) $ServletRequestServicerFilter_10ee4171104.service($ServletRequestServicerFilter_10ee4171104.java) $ServletRequestServicer_10ee417110c.service($ServletRequestServicer_10ee417110c.java) org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53) $ServletRequestServicerFilter_10ee4171108.service($ServletRequestServicerFilter_10ee4171108.java) $ServletRequestServicer_10ee417110c.service($ServletRequestServicer_10ee417110c.java) $ServletRequestServicer_10ee41710fe.service($ServletRequestServicer_10ee41710fe.java) org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123) org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:79) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) java.lang.Thread.run(Thread.java:595)