很难解释.. 所以,在a.jsp中,我有类似的东西:
<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>
的地方。好的,所以我将“action”属性更改为“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 :(得分:0)
将<h:form>
替换为<form>
,以便您可以使用action
属性。
或者,不要使用servlet,而只是使用JSF方式的托管bean操作。您只需要相应地实现该本地decode()
组件的x:upload
,它将过滤器收集的上载文件作为bean属性。或者,如果这工作太多,只需重用现有的JSF文件上传组件,如Tomahawk的t:inputFileUpload
。如何使用它可以在this article中找到。