这将很难解释..所以,在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>现在,按下"Send“按钮将运行filter,因为(我假设) filter会为每个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>但是它没有给出任何结果..有什么想法吗?
发布于 2011-01-12 09:25:24
将<h:form>替换为<form>,以便可以利用action属性。
或者,不使用servlet,而只使用JSF方式的托管bean操作。因此,您只需要实现本地x:upload组件的decode(),从而将过滤器收集的上传文件作为bean属性。或者,如果工作量太大,只需重用现有的JSF文件上传组件,如Tomahawk的t:inputFileUpload。如何使用它可以在this article中找到。
https://stackoverflow.com/questions/4664128
复制相似问题