google-code-export / nutz

Automatically exported from code.google.com/p/nutz
Apache License 2.0
1 stars 1 forks source link

nutz-1.b.37 版本 上传多个同名文件报错 #549

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
问题产生的条件:
nutz-1.b.37  版本 上传多个同名文件报错

发生问题的调用代码:

多个photo名上传。
form表单:
<legend>上传文件</legend>
    <form action="${base }/demo/myUpload/uploadPhoto" enctype="multipart/form-data" method="post">

        <input type="file" name="photo"></input><br/>
        <input type="file" name="photo"></input><br/>
        <input type="submit" value="上传图片"></input>
    </form>

java代码  @At
    @Ok("jsp:jsp.demo.myUpload")
    @Log(isEnabled=false)
    @AdaptBy(type = UploadAdaptor.class, args = { "d:/tmp", "8192", "UTF-8", "10" }) 
    public String uploadPhoto(@Param("photo") TempFile[] atf, HttpServletRequest request) throws Exception{
 return "aaa";
}

问题的详细说明:

不支持同名上传多个文件

异常堆栈:

java.lang.RuntimeException: Don't know how to born it!

at org.nutz.lang.MirrorBorning.<init>(MirrorBorning.java:29)
at org.nutz.lang.Mirror.born(Mirror.java:709)
at org.nutz.castor.castor.String2Object.cast(String2Object.java:16)
at org.nutz.castor.castor.String2Object.cast(String2Object.java:9)
at org.nutz.castor.Castors.cast(Castors.java:258)
at org.nutz.castor.Castors.castTo(Castors.java:318)
at org.nutz.lang.Lang.collection2array(Lang.java:782)
at org.nutz.castor.castor.Map2Array.cast(Map2Array.java:20)
at org.nutz.castor.castor.Map2Array.cast(Map2Array.java:10)
at org.nutz.castor.Castors.cast(Castors.java:258)
at org.nutz.castor.Castors.castTo(Castors.java:318)
at org.nutz.mvc.adaptor.injector.ArrayInjector.get(ArrayInjector.java:21)
at org.nutz.mvc.adaptor.AbstractAdaptor.adapt(AbstractAdaptor.java:164)
at 
org.nutz.mvc.impl.processor.AdaptorProcessor.process(AdaptorProcessor.java:28)
at 
org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at 
org.nutz.mvc.impl.processor.ActionFiltersProcessor.process(ActionFiltersProcesso
r.java:42)
at 
org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:76)
at 
org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at 
org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
at 
org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at 
org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateReque
stAttributesProcessor.java:15)
at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:36)
at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:66)
at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:30)
at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:60)
at com.venustech.tsoc.CupidNutFilter.doFilter(SourceFile:52)
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt
erChain.java:243)
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
java:210)
at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:2
25)
at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:1
69)
at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.jav
a:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118
)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor
.java:999)
at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractPro
tocol.java:565)
at 
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812
)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:8
86)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
返回 

相关日志:

Original issue reported on code.google.com by shenglu...@gmail.com on 23 May 2012 at 5:55

GoogleCodeExporter commented 9 years ago
改为使用List<TempFile>

原因在于ArrayInjector没有对ref进行解构,新版的nutz会识别出Map��
�提取出具体的对象

Original comment by wendal1985@gmail.com on 23 May 2012 at 1:45