3

ImageUpload を実装し、アップロードされた画像を DynamicImage を使用して同じページにすぐに表示しようとしています。私の問題は、 p:graphicImage コンテンツを強制的に更新して、アップロード後にアップロードされた画像を表示することができないことです。

@ManagedBean(name = "myformbean")
@Controller
@ViewScoped
@Data
public class MyFormBean implements Serializable {

    private StreamedContent listImage = null;

    public StreamedContent getListImage() {
        if (listImage == null) {
            try {
                listImage = new DefaultStreamedContent(new FileInputStream("E:/t.jpg"), "image/png"); // load a dummy image
            }
            catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }

        return listImage;
    }

    public void handleFileUpload(FileUploadEvent event) {
        final UploadedFile uploadedFile = event.getFile();

        listImage = new DefaultStreamedContent(new ByteArrayInputStream(uploadedFile.getContents()), "image/png");
    }
}

そして .xhtml ファイルで:

<p:graphicImage value="#{myformbean.listImage}" />
4

1 に答える 1

10

アップロードが機能する場合

あなたがする必要があるのは、<p:graphicImageこのようにidを設定することだけです

<p:graphicImage id="refreshMe" value="#{myformbean.listImage}" />

そして、あなたの<p:fileUpload設定で update 属性が画像を指すようにします

このような

<p:fileUpload  auto="true"  ... update="refreshMe" ....
于 2012-05-05T19:56:14.020 に答える