Jsf 显示数据表行中的数据时出现问题';当前对象

Jsf 显示数据表行中的数据时出现问题';当前对象,jsf,datatable,primefaces,Jsf,Datatable,Primefaces,我的datatable有问题,我想在选择数据表时显示数据表行的信息,为此我创建了一个名为currentChangerStatus的值,我想将其设置为当前选择,以下是我的代码: <p:dataTable id="projets" var="p" value="#{projet.init()}" rowSelectListener="#{projet.currentChangerStatus(currentChangerStatus)}" selectionMode="single" onR

我的datatable有问题,我想在选择数据表时显示数据表行的信息,为此我创建了一个名为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>  
问题是数据表不接受此表达式:

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

我认为您以错误的方式使用了行选择。属性
rowSelectListener
需要指向具有此签名的方法(关于):

在您的
p:dataTable
中,您需要以以下方式引用此方法:

<p:dataTable var="car" value="#{tableBean.cars}" paginator="true" rows="10"  
     selection="#{tableBean.selectedCar}" selectionMode="single"  
     rowSelectListener="#{tableBean.onRowSelect}"
value属性需要引用包含数据的列表或内容,而不是方法。例如,如果您有一个类项目,并且希望在表中显示项目列表,那么您的支持bean必须包含如下内容:

private List<Project> projects;

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

public void setProjects(List<Project> projects) {
   this.projects = projects;
}
私有列表项目;
公共列表项目(){
返回项目;
}
公共项目(列出项目){
这个项目=项目;
}

在它的
carSmall
列表中,也会执行相同的操作

我认为您以错误的方式使用了行选择。属性
rowSelectListener
需要指向具有此签名的方法(关于):

在您的
p:dataTable
中,您需要以以下方式引用此方法:

<p:dataTable var="car" value="#{tableBean.cars}" paginator="true" rows="10"  
     selection="#{tableBean.selectedCar}" selectionMode="single"  
     rowSelectListener="#{tableBean.onRowSelect}"
value属性需要引用包含数据的列表或内容,而不是方法。例如,如果您有一个类项目,并且希望在表中显示项目列表,那么您的支持bean必须包含如下内容:

private List<Project> projects;

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

public void setProjects(List<Project> projects) {
   this.projects = projects;
}
私有列表项目;
公共列表项目(){
返回项目;
}
公共项目(列出项目){
这个项目=项目;
}

在它的
carSmall
列表中,也会执行相同的操作

这是显示数据表行信息的另一种方式

<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}”是在单击命令链接时要更新的数据

这是显示数据表行信息的另一种方式

<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}”是当您单击命令链接时要更新的数据

“请帮助,因为我很快就需要这个项目!”-请接受一些答案(请参阅)。“请帮助,因为我很快就需要这个项目!”-请接受一些答案(请参阅)@Matt Handy在这里发布我的问题之前,我已经试过primefaces的展示案例,当我尝试调用页面代码上的onRowSelect时,我会录制projet。然后crtl+空间,这就给了我#{projet.onRowSelect(event)}如果我将(event)删除为只有#{projet.onRowSelect},编译器告诉我onRowSelect属性是未知的。另外,当我试图通过{projet.selectedCar}设置当前对象selectedCar时,页面引用geter,当我试图引用seter方法时,它给了我{{projet.setSelectedCar(selectedCar)}@cascadox:你确定我们使用它与我的答案完全一样吗?你使用哪个Primefaces版本?编译器抱怨“财产"有点烦人,因为
rowSelectListener
属性必须解析为方法而不是属性。请在答案中添加一些代码,以显示您所做的更改。@马特·汉迪:是的,我在showcase上做了,这是我的代码:………这是备份bean:public void onRowSelect(SelectEvent event){currentChangerStatus=(ChangerStatus)event.getObject();FacesMessage msg=new FacesMessage(“选定项目”),((ChangerStatus)event.getObject()).getEtats().GetLibelletAt();FacesContext.getCurrentInstance().addMessage(null,msg);}@Matt Handy:通常,当我选择i行时,应用程序应该设置currentobject并显示一条值为GetLibelletAt()的消息但是它不起作用…@Matt Handy在这里发布我的问题之前,我已经试过primefaces的展示案例了,当我试图调用页面代码中的onRowSelect时,我录制了projet。然后crtl+空格,这就给了我{projet.onRowSelect(event)},如果我删除(event)只有{projet.onRowSelect}编译器告诉我RowSelect的属性是未知的。当我试图通过#{projet.selectedCar}设置当前对象selectedCar时,页面引用geter,当我试图引用seter方法时,它给我#{projet.setSelectedCar(selectedCar)}@cascadox:你确定我们使用它和我的回答完全一样吗?你使用哪个Primefaces版本?编译器抱怨“属性”的事实有点烦人,因为
rowSelectListener
属性必须解析为方法而不是属性。请在答案中添加一些代码,以显示您所做的更改。@马特·汉迪:是的,我在showcase上做了,这是我的代码:………这是备份bean:public void onRowSelect(SelectEvent event){currentChangerStatus=(ChangerStatus)event.getObject();FacesMessage msg=new FacesMessage(“选定项目”),((ChangerStatus)event.getObject()).getEtats().GetLibelletAt();FacesContext.getCurrentInstance().addMessage(null,msg);}@马特·汉迪:通常,当我选择i行时,应用程序应该设置currentobject并显示一条值为GetLibelletAt()的消息,但它不起作用……嘿,我通过向数据表添加nRowSelectUpdate=“xhtmlElementID”创建了解决方案,谢谢大家的帮助嘿,我通过添加nRowSelectUpdate=“xhtmlElementID”创建了解决方案到数据表谢谢大家的帮助