如何在primefaces文件上传过程中传递参数 [英] how to pass the parameter during file upload in primefaces

查看:120
本文介绍了如何在primefaces文件上传过程中传递参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用jsf2.0与primfaces和使用p:fileupload上传照片..在这里我需要通过后台bean中的参数。在那里,没有选择通过p:fileupload传递参数..我也使用了绑定选项,但它返回的支持bean的空值...



这里是我的fileupload.xhtml

 < h:form enctype =multipart / form-data> 
style =font-size:12px; height:499px>
< p:messages id =messagesfor =imaload>< / p:messages>
{ngoPhotoUpload.photoUpload}
mode =advancedmultiple =true
immediate =true
update =messages
allowTypes =/(\。| \ /)(gif | jpe?g | png)$ //>

<! - < p:growl life =1000id =messages/> - >

< / p:面板>
< / h:表格>

这里是我的支持bean方法

<$ p公共无效的photoUpload(FileUploadEvent事件)抛出IOException,
InterruptedException {

BufferedImage bufferedImage;
String tmpFile = scontext.getRealPath((/ ngoPhotos /)
+ event.getFile()。getFileName());
文件结果=新文件(tmpFile);

byte [] imageByte = event.getFile()。getContents();

storeImage(imageByte,tmpFile);

String imageName = event.getFile()。getFileName();
String createdby = loginBean.getEmail();
$ b $ if(loginBean.getType()。equals(admin)
|| loginBean.getType()。equals(ngo_coordinator)){
if(ngoRegnPojo。 getNgo_id()!= 0){
ngoPhotoBean.setNgo_id(ngoRegnPojo.getNgo_id());
} else {
ngoPhotoBean.setNgo_id(loginBean.getUser_id());
}
} else {
ngoPhotoBean.setNgo_id(loginBean.getUser_id());
}

ngoPhotoBean.setImageName(imageName);
ngoPhotoBean.status =status;
ngoPhotoBean.setCreatedDate(new Date());
ngoPhotoBean.setCreatedby(createdby);
//ngoPhotoBean.setPathName(tmpFile);
ngoPhotoBean.disable =false;
bufferedImage = ImageIO.read(result);
if(bufferedImage.getWidth()< = 400& amp; bufferedImage.getHeight()< = 400){

ngoPhotoBean.disable =false;
getMthd(imageByte,tmpFile);

} else {

try {

ngoPhotoBean.disable =false;
bufferedImage = ImageIO.read(result);
ImageIO.write(resize(bufferedImage,400,400),jpg,new File(
tmpFile));
photoUploadDaoService.uploadNgoPhoto(ngoPhotoBean);
NgoPhotoBean ngoPhotoBean = new NgoPhotoBean();
FacesContext.getCurrentInstance()。getExternalContext()
.getSessionMap()。put(ngoPhotoBean,ngoPhotoBean);
FacesMessage msg =新的FacesMessage(成功上传);

FacesContext.getCurrentInstance()。addMessage(null,msg);

catch(Exception e){
e.printStackTrace();
FacesMessage错误=新的FacesMessage(
FacesMessage.SEVERITY_ERROR,
文件没有上传!,);
FacesContext.getCurrentInstance()。addMessage(null,error);





$ p

预先致谢

解决方案

您可以使用 p:remotecommand ,例如在fileupload的oncomplete中可以调用p :远程命令并调用传递参数的函数。我在我的项目中做了类似的工作,它工作得很好。


I am using jsf2.0 with primfaces and using p:fileupload for uploading the photo..Here i need to pass the parameter in backing bean. In that there is no option for passing parameter through p:fileupload.. i was used the binding option also,but it returns the null value on backing bean...

here is my fileupload.xhtml

   <h:form  enctype="multipart/form-data">
            <p:panel  header="Upload Photos" id="getImageId" 
             style="font-size:12px;height:499px">
            <p:messages id="messages" for="imaload"></p:messages>
                 <p:fileUpload id="imaload" fileUploadListener="#  
       {ngoPhotoUpload.photoUpload}"  
                           mode="advanced"  multiple="true"   
     immediate="true"
                          update="messages" 
                           allowTypes="/(\.|\/)(gif|jpe?g|png)$/"/>

                 <!--  <p:growl life="1000" id="messages"/>   -->

            </p:panel>
        </h:form>

here is my backing bean method

public void photoUpload(FileUploadEvent event) throws IOException,
        InterruptedException {

    BufferedImage bufferedImage;
    String tmpFile = scontext.getRealPath(("/ngoPhotos/")
            + event.getFile().getFileName());
    File result = new File(tmpFile);

    byte[] imageByte = event.getFile().getContents();

    storeImage(imageByte, tmpFile);

    String imageName = event.getFile().getFileName();
    String createdby = loginBean.getEmail();

    if (loginBean.getType().equals("admin")
            || loginBean.getType().equals("ngo_coordinator")) {
        if (ngoRegnPojo.getNgo_id() != 0) {
            ngoPhotoBean.setNgo_id(ngoRegnPojo.getNgo_id());
        } else {
            ngoPhotoBean.setNgo_id(loginBean.getUser_id());
        }
    } else {
        ngoPhotoBean.setNgo_id(loginBean.getUser_id());
    }

    ngoPhotoBean.setImageName(imageName);
    ngoPhotoBean.status = "status";
    ngoPhotoBean.setCreatedDate(new Date());
    ngoPhotoBean.setCreatedby(createdby);
    //ngoPhotoBean.setPathName(tmpFile);
    ngoPhotoBean.disable = "false";
    bufferedImage = ImageIO.read(result);
    if (bufferedImage.getWidth() <= 400 && bufferedImage.getHeight() <= 400) {

        ngoPhotoBean.disable = "false";
        getMthd(imageByte, tmpFile);

    } else {

        try {

            ngoPhotoBean.disable = "false";
            bufferedImage = ImageIO.read(result);
            ImageIO.write(resize(bufferedImage, 400, 400), "jpg", new File(
                    tmpFile));
            photoUploadDaoService.uploadNgoPhoto(ngoPhotoBean);
            NgoPhotoBean ngoPhotoBean = new NgoPhotoBean();
            FacesContext.getCurrentInstance().getExternalContext()
                    .getSessionMap().put("ngoPhotoBean", ngoPhotoBean);
            FacesMessage msg = new FacesMessage("Successfully Uploaded");

            FacesContext.getCurrentInstance().addMessage(null, msg);

        } catch (Exception e) {
            e.printStackTrace();
            FacesMessage error = new FacesMessage(
                    FacesMessage.SEVERITY_ERROR,
                    "The files were not uploaded!", "");
            FacesContext.getCurrentInstance().addMessage(null, error);
        }
    }
}

Thanks in advance

解决方案

You can use a p:remotecommand, for example with the oncomplete of the fileupload you can call the p:remote command and call a function passing the parameter. I did something similar in my proyect and it work pretty good.

这篇关于如何在primefaces文件上传过程中传递参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆