问题描述
我使用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文件上传过程中传递参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!