Ajax-update p:graphicImage

时间:2017-09-15 00:34:34

标签: jsf primefaces graphicimage ajax-update

查看

<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它没有说一件事,两个图像都没有刷新

0 个答案:

没有答案