查看
<h:form id="formfoto" enctype="multipart/form-data">
<center>
<p:outputLabel style="font-weight:bold;" value="Foto de perfil" />
</center>
<center>
<br/>
<!--p:graphicImage rendered="#{usuarioController.miImagen ==null}"
style="height:100px; width:100px;"
value="#{usuarioController.imagenDefecto}"
cache = "false" auto="true"/-->
<p:graphicImage
id="img"
style="height:100px; width:100px;"
value="#{usuarioController.miImagen}"
cache="false"/>
<p:fileUpload mode="advanced" auto="true"
fileUploadListener="#{usuarioController.convertirImagenABytes}"
allowTypes="/(\.|\/)(jpe?g|png)$/" sizeLimit="10000000"
invalidFileMessage="El archivo no está en el formato válido"
required="true"
update="@form" multiple="false" label="Subir imagen">
</p:fileUpload>
<!--p:commandButton rendered="#{usuarioController.miImagen !=null}"
value="Imagen por defecto"
actionListener="#{usuarioController.establecerFotoPorDefecto()}"
process="@this"
>
<p:ajax update="@this" event="click" rendered="@form" />
</p:commandButton-->
<p:commandButton
value="Imagen por defecto"
actionListener="#{usuarioController.establecerFotoPorDefecto()}"
process="@this,@parent,img"
ajax="true"
>
<p:ajax immediate="true" update="@form" event="click" rendered="@form"/>
</p:commandButton>
</center>
<br/>
</h:form>
控制器
public class UsuarioController implements Serializable {
private UploadedFile file;
private DefaultStreamedContent miImagen;
private UploadedFile uploadedFile;
public DefaultStreamedContent getMiImagen() {
convertirBytesAImagen();
/*if(miImagen==null)
miImagen = Utilidades.getImagenPorDefecto("foto");*/
return miImagen;
}
public void convertirBytesAImagen() {
if(imagen != null)
{
InputStream is = new ByteArrayInputStream((byte[]) imagen);
miImagen = new DefaultStreamedContent(is, "image/png");
}
}
public void establecerFotoPorDefecto() {
System.out.println("Hallo");
this.file = null;
this.miImagen = (DefaultStreamedContent) this.getImagenDefecto();
//requestContext.execute("PF('UsuarioCreateDialog').hide()");
//requestContext.execute("PF('UsuarioCreateDialog').show()");
//this.imagenPorDefecto();
}
public StreamedContent getImagenDefecto() {
return Utilidades.getImagenPorDefecto("foto");
}
}
我希望能够刷新图像,当用户选择图像时,默认图像被他选择的图像替换,如果他想要返回默认图像,他可以点击“imagen por defecto”但它在视图上没有令人耳目一新,有谁知道我能做什么?
在命令按钮名称“imagen por defecto”上如果我有process =“@ this,@ parent,img”我收到此错误
multipart/form-data request not sending content-type
但是如果我删除了@parent它没有说一件事,两个图像都没有刷新