2011-06-05 26 views
0

我的數據表有問題,我想在選擇它時顯示數據錶行的信息,因爲我創建了一個名爲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)}" 
+1

_「請幫助,因爲我很快就需要這個項目!」 _ =「#{} project.SomeObject」是對數據進行更新 - 請接受一些答案(請參閱[faq](http://stackoverflow.com/faq))。 – 2011-06-06 06:11:46

回答

2

這是顯示數據錶行信息的其他方法。

<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> 

這裏的目標,當你在命令鏈接cleck

+0

嘿,我創建瞭解決方案,通過添加nRowSelectUpdate =「xhtmlElementID」到數據表感謝所有的幫助 – cascadox 2011-06-12 12:20:00

1

我想你是用錯誤的方式使用行選擇。 rowSelectListener需要指出的方法與此簽名的屬性(如給Primefaces showcase):

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

在你p:dataTable你需要參照此方法是這樣的:

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

注意如何監聽器方法被引用。

通過這個,您可以在tableBean.selectedCar中獲得所選的行對象。

一個完整的例子在展示中給出(上面的鏈接)。

UPDATE從您的評論:

這就是問題所在:

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

value屬性需要引用列表或包含數據的東西,而不是一個方法。如果您有例如一類項目,並希望在表中顯示的項目清單,支撐bean必須包含這樣的事情:

private List<Project> projects; 

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

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

primefaces showcasecarSmall列表,做同樣的。

+0

@Matt Handy我在這裏發佈我的問題之前已經嘗試了primefaces的展示案例,當我嘗試在我的頁面的代碼上調用onRowSelect時,我的磁帶projet。然後crtl +空間,這給了我#{projet.onRowSelect(事件)}如果我刪除(事件)只有#{projet.onRowSelect}編譯器告訴我,屬性onRowSelect是未知的。當我嘗試設置當前對象selectedCar通過#{projet.selectedCar}頁面引用geter,並且當我嘗試引用seter方法時,它給了我#{{projet.setSelectedCar(selectedCar)} – cascadox 2011-06-07 10:38:24

+0

someone to幫幫我? – cascadox 2011-06-08 09:30:28

+0

@cascadox:你確定我們完全按照我的回答使用它嗎?您使用哪個Primefaces版本?由於'rowSelectListener'屬性必須解析爲方法而不是屬性,因此編譯器抱怨「屬性」的事實有點讓人惱火。請在您的答案中添加一些代碼,以顯示您所做的更改。 – 2011-06-08 09:34:17