ajax调用不是从<p:datagrid> </p:datagrid>中调用的

时间:2012-08-22 12:40:53

标签: ajax jsf datagrid primefaces

我也阅读了BalusC的帖子(here),但仍然无法从dataGrid进行ajax调用。 是不是dataGrid不支持ajax调用?或者我错过了什么?

尝试了所有的东西,这个方法在dataGrid之外被击中,所以我假设有些事情与dataGrid有关。首先我的页面被包含在模板中,我删除了它,但仍然没有运气。

我的jsf:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:ui="http://java.sun.com/jsf/facelets" 
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">

    <h:head>
        <title>Order select</title>
    </h:head>

    <h:body>

                    <p:layout style="min-width:400px;min-height:400px;" id="layout">  

                        <p:layoutUnit id="rightLayout" position="east" size="100" minSize="200" maxSize="200">  
                            right
                        </p:layoutUnit>  

                        <p:layoutUnit position="center" >  

                            <h:form id="imgForm" style="text-align: center">

                                <p:dataGrid var="img" 
                                            value="#{orderBean.userMedia.mediaList}" 
                                            columns="4"  
                                            rows="16" 
                                            paginator="true"  
                                            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"  
                                            rowsPerPageTemplate="9,12,15">  

                                    <p:panel>
                                        <p:commandLink actionListener="#{orderBean.selectImage}" update="@form">
                                            <p:graphicImage value="#{img.thumbNail.getString('url')}"/>
                                        </p:commandLink>
                                    </p:panel>

                                </p:dataGrid> 

                            </h:form>  

                        </p:layoutUnit>  
                    </p:layout>  

    </h:body>
</html>

我的托管bean(viewScoped)方法:

public void selectImage()
    {
        String methodName = "selectImage()";
        log.info("Entering :"+methodName);
    }

我正在使用: 主要内容:3.3.1 (tomcat 7 + Java 1.6)

1 个答案:

答案 0 :(得分:1)

正如primefaces文档中所述,您必须将p:datagrid内的所有内容放在p:column

<p:dataGrid var="img" 
            value="#{orderBean.userMedia.mediaList}" 
            columns="4"  
            rows="16" 
            paginator="true"  
            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"  
            rowsPerPageTemplate="9,12,15">  
     <p:column>
         <p:panel>
             <p:commandLink actionListener="#{orderBean.selectImage}" update="@form">
                 <p:graphicImage value="#{img.thumbNail.getString('url')}"/>
              </p:commandLink>
         </p:panel>
    </p:column>
</p:dataGrid>

从primefaces版本3.4开始,这不是必需的,但您使用的是版本3.3.1