重新构建GenericLink参数时要注意的地方

 

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)
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值