2011-12-23 4 views
0

파일 업로드에 Tomahawk 라이브러리를 사용하고 있습니다. 그러나 h : commandButton을 클릭하면 뒷받침 빈의 메서드가 호출되지 않습니다.t : 매핑 된 (예쁜 얼굴) .xhtml 페이지에서 호출했을 때 inputFileUpload가 작동하지 않습니다.

우는 소리는 일을해야하는 코드 시퀀스이며, user_profile.xhtml 페이지의 일부입니다 (있는 WebContent 폴더의 루트에 저장됩니다 응용 프로그램이 보스 6.1에 배포) :

<p:dialog widgetVar="avatar" hideEffect="fade" width="300" height="300" 
    header="Avatar upload"> 
    <h:form enctype="multipart/form-data"> 
     <t:inputFileUpload value="#{uploadBean.uploadedFile}" id="upload" /> 
     <h:commandButton value="Upload" action="#{uploadBean.submit}" /> 
    </h:form> 
</p:dialog> 
// 로컬 호스트 : 페이지에 대한 액세스를 제공

링크는 을 http 보이는 URL 매핑 세트 꽤-config.xml 파일에서,이 있기 때문에, 8080/사용자/20 같은 :

<url-mapping id="user_profile"> 
    <pattern value="/user/#{id}"></pattern> 
    <view-id value="/user_profile.jsf"></view-id> 
</url-mapping> 

그러나 내가 직접 페이지에 액세스 할 때 avoi 꽤 구성 매핑, http : // localhost : 8080/user_profile.jsf, 업로드 작업을 잘 작동합니다! 예쁜 얼굴과 충돌이 있거나 뭔가를 간과했다고 생각합니다.

미리 감사드립니다.

web.xml의의 시작 :

가 토마 필터가 적절하게 등록되지
<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="YAS" version="3.0"> 
    <display-name>YouAndShoe</display-name> 

    <context-param> 
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>server</param-value> 
</context-param> 

    <filter> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
    </filter-mapping> 

    <filter> 
    <filter-name>Pretty Filter</filter-name> 
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>Pretty Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
    </filter-mapping> 
... 
+0

'web.xml'에 선언 된 필터의 순서는 무엇입니까? 나는 그것들을 한번도 사용 해본 적이 없지만, PrettyFaces가 Tomahawk 전에 실행되면 의미가 있습니다. – BalusC

+0

@BalusC : Thomahawk 이전에 PrettyFaces 필터가 실행 중이었지만 변경했으나 여전히 작동하지 않습니다. web.xml 컨텐츠의 일부를 업로드했습니다. – CyberMJ

+0

그러나 PrettyFaces 필터 앞에 Tomahawk 필터가 표시됩니다. 어쨌든, 나는 자신의 사이트에있는 PrettyFaces 친구들에게 버그를보고하는 것이 더 낫다고 생각합니다. – BalusC

답변

2

(정의 된 운영자 (들)가 없었다). 이것이 어떻게해야하는지입니다 :

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="YAS" version="3.0"> 
    <display-name>YouAndShoe</display-name> 

    <context-param> 
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>server</param-value> 
</context-param> 



    <filter> 
    <filter-name>Pretty Filter</filter-name> 
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>Pretty Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
    </filter-mapping> 
    <filter> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <url-pattern>/faces/myFacesExtensionResource/*</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>ERROR</dispatcher> 
</filter-mapping> 
... 

이 문제가 해결되었습니다.

+1

맞습니다. 중요한 부분은'MyFacesExtensionFilter'에 대해서' FORWARD '입니다. 자세한 내용은 PrettyFaces FAQ를 참조하십시오. – chkal

+0

@chkal : 고맙습니다. FAQ 페이지에서이 문제에 대한 설명을 찾았습니다. – CyberMJ