PrimeFacesのp:graphicImage、便利ではあるんだけど、バグがまだあるようです。
ちゃんと切り分けてないんで、今回ハマったのが具体的にどんなバグかまではわかってないけど、p:tabPanelでまわすのがダメなのかなー。
画像処理サーブレットを作って対応してもそれほど手間ではないので、あきらめるのも手です。
その場合、画像表示は普通にimgタグを使うことになるのですが、そうするとAjaxでの表示きりかえができなかったりするので、次のようにしてp:outputPanelで覆ってやるといいです。
<p:outputPanel id="pnl"> <p:outputPanel rendered="#{editBean.hasImage}"> <img src="#{editBean.imageUrl}"/> </p:outputPanel> </p:outputPanel>
Ajaxで切り替えるときに、updateを指定するpanelとrenderedを記述するpanelは分けないといけないので注意。
詳しくは、あとで書く。
かもしれない。