2011-01-12 32 views
0

這將是很難解釋.. 所以,在a.jsp我有這樣的事情:從面孔,配置運行的servlet

<h:form enctype="multipart/form-data" > 
        <td><input type="text" name="imgName" value="" size="7"/></td> 
        <td><input type="text" name="imgDesc" value="" size="30"/></td> 
        <td> 
         <x:upload target="/upload/#{loginBean.user.login}/#{loginBean.user.filesUploaded}_image.jpg"/> 
        </td> 
        <td>        
         <h:commandButton value="Send" action="submit"/> 
        </td> 
        </h:form> 

現在,按下「發送」按鈕將運行過濾器,因爲(正如我所假設的),過濾器爲每個Faces Servlet運行(對於每個jsp?)。我的web.xml文件:

<filter> 
     <filter-name>Upload Filter</filter-name> 
     <filter-class>DomainModels.Adds.UploadFilter</filter-class> 
     <init-param> 
     <param-name>sizeThreshold</param-name> 
     <param-value>1024</param-value> 
     </init-param> 
    </filter> 
    <filter-mapping> 
     <filter-name>Upload Filter</filter-name> 
     <servlet-name>Faces Servlet</servlet-name> 
    </filter-mapping> 

如何在過濾後強制運行servlet?我讀的地方,我必須寫簡單<servlet><servlet-mapping>。好了,我已經改變了「行動」屬性「TestServlet.do」,添加了這個:

<servlet> 
     <servlet-name>TestServlet</servlet-name> 
     <servlet-class>DomainModels.Adds.AddImage</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>TestServlet</servlet-name> 
     <url-pattern>/TestServlet.do</url-pattern> 
    </servlet-mapping> 

但還是我的TestServlet不工作.. 我試圖加入到faces-config.xml中這樣的:

<navigation-rule> 
    <from-view-id>/upload/a.jsp</from-view-id> 
    <navigation-case> 
     <from-outcome>submit</from-outcome> 
     <to-view-id>/TestServlet.do</to-view-id> 
    </navigation-case> 
    </navigation-rule> 

,但它沒有給出結果.. 任何想法?

回答

0

<h:form>替換爲<form>以便您可以利用action屬性。

另外,不要使用servlet,但只使用一個管理bean的行動JSF方式。你只需要遵照執行的是自產自銷x:upload組件的decode(),它使得它由過濾器作爲Bean屬性收集上傳的文件。或者,如果是太辛苦了,只是重用現有的JSF文件上傳組件,像戰斧的t:inputFileUpload。如何使用它可以在this article找到。

+0

所以,如果我想要做的事,我只是把它放在decode()方法?在我的代碼中,我確實有這樣的事情,並且(如果我正確理解它的話)它用於保存從過濾器上傳的文件。但是,我能夠從豆類中獲得價值嗎? – Seraphis 2011-01-12 08:12:31