JSF使用<p:fileUpload>进行上传图片出现的javax.servlet.ServletException: The request content-type is not a multip...

错误代码:

警告: javax.servlet.ServletException: The request content-type is not a multipart/form-data
javax.faces.FacesException: javax.servlet.ServletException: The request content-type is not a multipart/form-data
at org.primefaces.component.fileupload.NativeFileUploadDecoder.decode(NativeFileUploadDecoder.java:44)
at org.primefaces.component.fileupload.FileUploadRenderer.decode(FileUploadRenderer.java:44)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:836)         

...

错误解决方法一:

1.<h:form enctype="multipart/form-data">  这个要指定

2.<p:commandButton action="#{tcAdvertController.create()}" update=":forupdate,:msg" oncomplete="adds.hide();"  value="保存" ajax="false">要指定ajax="false" 否则ajax的默认值是true

 

部分代码贴出如下:

<p:dialog header="添加" widgetVar="adds" modal="true" appendTo="@(body)" position="center"  width="700">
            <h:form id="add" enctype="multipart/form-data">
                <h:panelGrid columns="2">
                <h:outputLabel value="广告跳转地址:"/>
                <h:inputText value="#{tcAdvertController.selected.adUrl}" required="true" requiredMessage="请填写广告跳转地址"/>
                <h:outputLabel value="是否显示:"/>
                <h:selectOneMenu value="#{tcAdvertController.selected.isshow}">
                        <f:selectItem itemLabel="是" itemValue="1"/>
                        <f:selectItem itemLabel="否" itemValue="0"/>
                    </h:selectOneMenu>
                <h:outputLabel value="类型:"/>
                <h:selectOneMenu value="#{tcAdvertController.selected.type}">
                        <f:selectItem itemLabel="首页" itemValue="0"/>
                        <f:selectItem itemLabel="我要服务" itemValue="1"/>
                    </h:selectOneMenu>
                <h:outputLabel value="图片:"/>
                </h:panelGrid>
                <p:fileUpload allowTypes="/(\.|\/)(gif|jpe?g|png)$/" update="addimage,:msg" style="width: 560px;"  multiple="true" uploadLabel="上传" invalidFileMessage="图片文件有误,格式:gif、jpg、jpeg、png" sizeLimit="2097152" invalidSizeMessage="图片文件不能大于2M" cancelLabel="取消上传" label="选择上传图片" fileUploadListener="#{tcAdvertController.handleFileUpload}">
                </p:fileUpload>
                <h:panelGroup id="addimage">                
                    <ui:repeat   var="item" value="#{tcAdvertController.imgesList}">
                        <div style="float: left;border:solid 1px aqua;" >
                            <div style="padding:10px;text-align: center">
                                <p:commandButton   style="background: url('../resources/images/del.png'); width: 35px;height: 35px;" value=""  action="#{tcAdvertController.delImage(item)}"/>
                                <p/>
                                <p:lightBox   width="400" height="auto"> 
                                    <h:outputLink style="text-decoration:none;"  value="#{item}" > 
                                        <h:graphicImage style="width: 50px;height: 50px;" value="#{item}" alt="点击“查看/刷新”"/>
                                    </h:outputLink>  
                                </p:lightBox>           
                            </div>
                        </div>
                    </ui:repeat>                   
                </h:panelGroup>
                <br />
                <div style="clear: both">
                </div>
                <p/>
                <div>    
               
                    <p:commandButton action="#{tcAdvertController.create()}" update=":forupdate,:msg" oncomplete="adds.hide();" value="保存" ajax="false"></p:commandButton>
                    &nbsp;&nbsp;               
                    <p:commandButton oncomplete="adds.hide();" value="#{bundle.Close}" />  
                </div>
            </h:form>
        </p:dialog>

没有以上两步的话就会报出javax.servlet.ServletException: The request content-type is not a multipart/form-data这个错误

 

解决方法二:可能是primefaces的jar包版本问题,我做的项目jar包本来是primefaces-4.0.jar  后来改成了更高版本的就可以了

另外,好像是版本超过5以后的primefaces的jar包,就要更换下列书写方式:

 

<p:commandButton update=":forupdate,:msg" oncomplete="adds.show();" value="保存" /> 要改成oncomplete="PF('adds').show();"

其中,adds是一个<p:dialog>的元素

转载于:https://www.cnblogs.com/panlongfeng/p/7229349.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值