Проблема с отображением данных из текущего объекта строки данных - PullRequest
0 голосов
/ 06 июня 2011

У меня проблема с таблицей данных, я хочу отображать информацию о строке таблицы данных при ее выборе, для этого я создал значение currentChangerStatus. Я хотел установить его в текущем выделении, вот мой код:

<p:dataTable id="projets"  var="p" value="#{projet.init()}" rowSelectListener="#{projet.currentChangerStatus(currentChangerStatus)}" selectionMode="single" onRowSelectStart="datecreation">  

                                    <f:facet name="header">  
                                            Listes des projets Gpsi  
                                        </f:facet>  

                                        <p:column>  
                                            <f:facet name="header">  
                                                <h:outputText value="Code" />  
                                            </f:facet>  
                                            <h:outputText value="#{p.projets.codeProjet}" />  
                                        </p:column>  

                                        <p:column>  
                                            <f:facet name="header">  
                                                <h:outputText value="Intitulé" />  
                                            </f:facet>  
                                            <h:outputText value="#{p.projets.libelle}" />  
                                        </p:column>  


                                    </p:dataTable>  

боб:

 public void setCurrentChangerStatus(ChangerStatus currentChangerStatus)
{
    this.currentChangerStatus=currentChangerStatus;
}
  public ChangerStatus getCurrentChangerStatus()
{
        return currentChangerStatus;
    }

проблема в том, что дата не принимает это выражение:

rowSelectListener="#{projet.currentChangerStatus(currentChangerStatus)}"

Ответы [ 2 ]

2 голосов
/ 10 июня 2011

Это другой способ отображения информации строки таблицы данных.

<p:dataTable>
.....
.....
   <p:column>
    <p:commandLink update="xhtmlElementID" title="View Detail"  >
                     <p:graphicImage value="/images/search.png" />
                   <f:setPropertyActionListener value="#{p}" target="#{project.SomeObject}" />
         </p:commandLink>
</p:column>
</p:dataTable>

здесь target = "# {project.SomeObject}" - это Данные, которые будут обновлены при щелчке по ссылке на команду

1 голос
/ 06 июня 2011

Я думаю, что вы используете выбор строки неправильно.Атрибут rowSelectListener должен указывать на метод с этой подписью (что касается Primefaces showcase ):

 public void onRowSelect(SelectEvent event) { ... }

В вашем p:dataTable вам необходимо обратиться к этому методуway:

<p:dataTable var="car" value="#{tableBean.cars}" paginator="true" rows="10"  
     selection="#{tableBean.selectedCar}" selectionMode="single"  
     rowSelectListener="#{tableBean.onRowSelect}"

Обратите внимание, как вызывается метод слушателя.

При этом вы получаете выбранный объект строки в tableBean.selectedCar.

Полный пример приведенв витрине (ссылка выше).

ОБНОВЛЕНИЕ Из ваших комментариев:

Это проблема:

value="#{projet.init()}"

Атрибут значения долженобратитесь к списку или тому, что содержит ваши данные, а не к методу.Если у вас есть, например, класс Project и вы хотите отобразить список проектов в таблице, ваш компонент поддержки должен содержать что-то вроде этого:

private List<Project> projects;

public List<Project> getProjects() {
   return projects;
}

public void setProjects(List<Project> projects) {
   this.projects = projects;
}

В витрине primefaces егосписок carSmall, который делает то же самое.

...