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, это ничего не говорит, с обоими изображение не обновляется

0 ответов

Другие вопросы по тегам