2012-07-06 52 views
0

我想上傳使用Apache tomhawk與JSF 2.0文件,但是當我嘗試導航到我收到以下錯誤相應的視圖:阿帕奇tomhawk <T:inputFileUpload>標籤不工作

javax.faces.view.facelets.TagAttributeException: /jsf/importReport.xhtml @30,51 value="#{import.uploadedFile}" Failed to parse the expression [#{import.uploadedFile}] 
at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:401) 
at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:351) 
at com.sun.faces.facelets.tag.jsf.ValueHolderRule$DynamicValueExpressionMetadata.applyMetadata(ValueHolderRule.java:129) 
at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81) 
at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:402) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:159) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:103) 
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:178) 
at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:395) 
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366) 
at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:108) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:186) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:82) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346) 
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) 
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155) 
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:82) 
at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152) 
at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:744) 
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:509) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:357) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:109) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169) 
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java: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:987) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:619) 
Caused by: javax.el.ELException: Failed to parse the expression [#{import.uploadedFile}] 
at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:146) 
at org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:172) 
at org.apache.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:217) 
at org.apache.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:67) 
at com.sun.faces.facelets.tag.TagAttributeImpl.getValueExpression(TagAttributeImpl.java:385) 
... 87 more 
Caused by: javax.el.ELException: The identifier [import] is not a valid Java identifier as required by section 1.19 of the EL specification (Identifier ::= Java language identifier). This check can be disabled by setting the system property org.apache.el.parser.SKIP_IDENTIFIER_CHECK to true. 
at org.apache.el.parser.AstIdentifier.setImage(AstIdentifier.java:133) 
at org.apache.el.parser.ELParser.Identifier(ELParser.java:1217) 
at org.apache.el.parser.ELParser.NonLiteral(ELParser.java:1193) 
at org.apache.el.parser.ELParser.ValuePrefix(ELParser.java:1019) 
at org.apache.el.parser.ELParser.Value(ELParser.java:968) 
at org.apache.el.parser.ELParser.Unary(ELParser.java:950) 
at org.apache.el.parser.ELParser.Multiplication(ELParser.java:714) 
at org.apache.el.parser.ELParser.Math(ELParser.java:634) 
at org.apache.el.parser.ELParser.Compare(ELParser.java:446) 
at org.apache.el.parser.ELParser.Equality(ELParser.java:340) 
at org.apache.el.parser.ELParser.And(ELParser.java:284) 
at org.apache.el.parser.ELParser.Or(ELParser.java:228) 
at org.apache.el.parser.ELParser.Choice(ELParser.java:185) 
at org.apache.el.parser.ELParser.Expression(ELParser.java:177) 
at org.apache.el.parser.ELParser.DeferredExpression(ELParser.java:115) 
at org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:43) 
at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:115) 
... 91 more* 

我使用下面的web.xml:

<servlet> 
<servlet-name>Faces Servlet</servlet-name> 
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
<servlet-name>Faces Servlet</servlet-name> 
<url-pattern>*.faces</url-pattern> 
</servlet-mapping> 

<filter> 
<filter-name>MyFacesExtensionsFilter</filter-name> 
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class> 
    <init-param> 
     <param-name>uploadMaxFileSize</param-name> 
     <param-value>20m</param-value> 
    </init-param> 
</filter> 


<filter-mapping> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 

    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 


<filter-mapping> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <url-pattern>/faces/myFacesExtensionResource/*</url-pattern> 
</filter-mapping> 


<context-param> 
<param-name>javax.faces.CONFIG_FILES</param-name> 
<param-value>/WEB-INF/config/faces-config.xml</param-value> 
</context-param> 
<context-param> 

<param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
<param-value>client</param-value> 
</context-param> 
<context-param> 
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> 
<param-value>resources.application</param-value> 
</context-param> 

<listener> 
<listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
</listener> 

我使用下面的JSF代碼視圖:

<ui:define name="content"> 
<div id="midbody" class="span-24"> 
<h:form enctype="multipart/form-data"> 
<t:inputFileUpload value="#{import.uploadedFile}"></t:inputFileUpload> 
<h:commandButton action="#{import.getFile}"></h:commandButton> 
</h:form> 
</div> 

</ui:define> 

我的託管bean如下:

public class ImportMB { 
    private UploadedFile uploadedFile; 

    public String getFile(){ 
     String fileName = FilenameUtils.getName(uploadedFile.getName()); 
     try { 
InputStream myInput = uploadedFile.getInputStream(); 
System.out.println(fileName); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
return "importReport"; 
    } 

回答

0

看你的堆棧跟蹤,它說:

javax.el.E​​LException:標識符[進口]不是有效的Java標識符中要求的部分1.19 EL規範(Identifier :: = Java語言標識符)。可以通過將系統屬性org.apache.el.parser.SKIP_IDENTIFIER_CHECK設置爲true來禁用此檢查。

更改bean名稱將工作。

+0

It works,thx ... – 2012-07-10 13:44:43