2011-12-23 26 views
0

我正在使用Tomahawk庫進行文件上傳。 但是,當我點擊h:commandButton來提交表單時,從不會調用backing bean的方法。t:當從映射(漂亮的臉孔)調用inputFileUpload時不起作用.xhtml頁面

婁是碼序列應該做的工作,並且它是user_profile.xhtml頁的一部分(其被存儲在WebContent文件夾的根目錄;將應用程序部署在JBoss 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://本地主機:8080 /用戶/ 20,因爲URL映射集漂亮-config.xml文件中,它看起來像:

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

但是,當我通過avoi直接訪問頁面時ding pretty-config映射,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在「戰斧」之前運行,那麼這將是有意義的。 – BalusC 2011-12-23 01:37:45

+0

@BalusC:PrettyFaces過濾器在Thomahawk之前運行,但我改變了這一點,但它仍然不起作用。我上傳了web.xml內容的一部分。 – CyberMJ 2011-12-23 02:41:45

+0

但它在PrettyFaces過濾器之前顯示了Tomahawk過濾器。無論如何,我認爲向自己的網站上的PrettyFaces傢伙報告bug會更好。 – BalusC 2011-12-23 03:01:08

回答

2

戰斧過濾器沒有被正確註冊(沒有定義調度(S))。這是應該怎麼做:

<?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 2011-12-24 14:12:26

+0

@chkal:謝謝,我剛剛在他們的FAQ頁面上找到了這個問題的解釋。 – CyberMJ 2011-12-24 18:43:45