h:form と p:panelGrid の両方を更新するのが難しいので、助けてもらえますか? @form も試しましたが、何も起こりません。F5 キーを押した場合にのみ、期待どおりの動作が発生します。
xhtml:
<h:form id="slct_img_form">
<p:panel header="Nova categoria">
<div style="margin: 2% 0 1.7% 0;">
<p><b>2.º Passo:</b> Selecione uma imagem para representar a categoria.</p></pre>
</div>
<p>debugging selected: #{catalogCategoryController.picasaPhoto.title}</p>
<p:dataGrid id="imgs_to_slct" var="img" value="#{siteImgsPicasaController.picasaPhotos}"
columns="3" rows="6" paginator="true"
emptyMessage="Nenhuma imagem até o momento!"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="6,9,12">
<p:column>
<p:panel header="#{img.title}" style="text-align:center; width: 300px;">
<table border="0" style="margin: 0 auto;">
<tr> </tr>
<tr>
<td colspan="3">
<p:lightBox group="false" transition="false">
<h:outputLink value="#{img.sourceUrl}" title="#{img.title}">
<h:graphicImage value="#{img.thumbnailUrl}" />
</h:outputLink>
</p:lightBox>
</td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td><b>Dimensões:</b> #{img.width} x #{img.height} pixels</td>
</tr>
<tr>
<td>
<p:commandButton title="Selecionar" value="Selecionar"
rendered="#{img.sourceUrl ne catalogCategoryController.picasaPhoto.sourceUrl}"
update=":slct_img_form:imgs_to_slct">
<f:setPropertyActionListener value="#{img}"
target="#{catalogCategoryController.picasaPhoto}" />
</p:commandButton>
<p:commandButton title="Selecionar" value="Selecionar" icon="ui-icon-check"
rendered="#{img.sourceUrl eq catalogCategoryController.picasaPhoto.sourceUrl}"
disabled="true" />
</td>
</tr>
<tr> </tr>
</table>
</p:panel>
</p:column>
</p:dataGrid>
<div style="font-weight: bold; margin: 2% 0 1% 0;">
<p:commandButton value="Voltar" icon="ui-icon-arrow-1-w"
ajax="false" type="submit"
action="new">
</p:commandButton>
<p:commandButton value="Gravar" icon="ui-icon-disk"
ajax="false" type="submit"
action="#{catalogCategoryController.add}">
</p:commandButton>
</div>
</p:panel>
</h:form>
...
マネージドBean:
@Named
@SessionScoped
public class CatalogCategoryController implements Serializable{
...
private PicasaPhoto picasaPhoto;
public PicasaPhoto getPicasaPhoto() {
return picasaPhoto;
}
public void setPicasaPhoto(PicasaPhoto picasaPhoto) {
this.picasaPhoto = picasaPhoto;
this.selectedImage = new Media(picasaPhoto, currentAccount);
}
....
}
ありがとう、