1

我很难同时更新 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&eacute; 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>&nbsp;</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">&nbsp;</td>
                    </tr>
                    <tr>
                        <td><b>Dimens&otilde;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>&nbsp;</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>

...

托管豆:

@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);
}

....
} 

谢谢,

4

1 回答 1

3

添加prependId="false"form属性,然后 primefaces 不会form ID在其他组件 id 之前添加,否则您必须指定组件的“完整”路径(如果它不在特定的form. 然后尝试使用update="@form"orupdate=":imgs_to_slct"

于 2012-05-15T15:43:58.130 回答