Ajax-обновление p:graphicImage
Посмотреть
<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 дефекто", но оно не обновляется. на вид, кто-нибудь знает, что я могу сделать?
на имя кнопки команды "imagen por дефекто", если у меня есть process="@this,@parent,img", я получаю эту ошибку
multipart/form-data request not sending content-type
но если я удалил @parent, это ничего не говорит, с обоими изображение не обновляется