首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

JSF 上传文件的有关问题

2011-12-14 
JSF 上传文件的问题JSP页面:!DOCTYPEHTMLPUBLIC-//W3C//DTDHTML4.01Transitional//EN htmlhead%@

JSF 上传文件的问题
JSP页面:

<!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.01   Transitional//EN ">
<html>
    <head>
        <%@   taglib   uri= "http://java.sun.com/jsf/html "   prefix= "h "%>
        <%@   taglib   uri= "http://java.sun.com/jsf/core "   prefix= "f "%>
        <%@   taglib   uri= "http://java.sun.com/jstl/core "   prefix= "c "%>
        <%@   taglib   uri= "http://myfaces.sourceforge.net/tld/myfaces_ext_0_9.tld "   prefix= "x "%>
    </head>
    <body   bottommargin= "0 "   topmargin= "0 "   leftmargin= "0 "   rightmargin= "0 ">
        <f:view>
            <h:form   id= "mainForm "   enctype= "multipart/form-data "   style= "margin-top:0em;   margin-bottom:0em ">
                标题:
                <h:inputText   value= "#{XXX.title} "   size= "30 "   maxlength= "30 "> </h:inputText>
                上传文件:
                <x:inputFileUpload   id= "fileupload "   accept= "image/* "   storage= "file "   value= "#{XXX.uploadFile} "   styleClass= "input_large "   required= "false "   />
            </h:form>
        </f:view>
    </body>
</html>

web.xml配置文件:
<filter>
    <filter-name> multipartFilter </filter-name>
    <filter-class> net.sourceforge.myfaces.custom.fileupload.MultipartFilter </filter-class>
        <init-param>
            <param-name> maxFileSize </param-name>
            <param-value> 30m </param-value>
            <description> Set   the   size   limit   for   uploaded   files.
                                Format:   10   -   10   bytes
                                                10k   -   10   KB
                                                10m   -   10   MB
            </description>
        </init-param>
</filter>
<filter-mapping>
    <filter-name> multipartFilter </filter-name>
    <url-pattern> *.jsf </url-pattern>
</filter-mapping>

我现有两个问题:
1、在选择了上传文件后,[标题]不输入,然后提示[标题请输入]的信息出来了,但我刚选择的文件路径经丢失了,请问如何保存选择了的文件在有提示信息后不被丢失。
2、我在web.xml文件中配置了上传文件的大小,当我上传一个超过此大小的文件也,数据没有提交,但也没有给我提示任何的信息,请问我怎么样可能获得出错信息。



[解决办法]
1。input file中的内容不能保存,也不能用js的方式动态修改input file的值
2。可能会抛出异常,你可以跟代码看看
[解决办法]
如果你要保存内容的话建议在客户端验证标题的值
[解决办法]
1、不要采用jsf的验证机制,因为jsf的验证需要提交表单,使页面信息刷新后丢失。

2、可以采用后台判断,jsf一般采用的是apache的common-fileupload开源包实现上传的
即org.apache.myfaces.custom.fileupload.UploadedFile file,
可以用file.getSize()获取上传文件的大小,然后采用下面提示客户端
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,info, null);
FacesContext.getCurrentInstance().addMessage( "上传的文件太大 ", message);

热点排行