2013-12-15 24 views
0

我想在我的富文本結尾處添加一行:數據表顯示信息 ,並且在此行中我想將一些輸入用於允許用戶添加新數據 我讀了這個答案: RICH:dataTable - add new row 但對我來說是一個有點不同 我沒有任何名單向富文本添加一行:手動輸入文本的數據表

我XHTML是這樣的:

<rich:dataTable value="#{serverMB.allServer}" var="servers1" iterationStatusVar="it" id="table" rows="15" 
      style="direction: rtl ; text-align: right"> 
<rich:column> 
    <f:facet name="header">#</f:facet> 
    #{it.index+1} 
</rich:column> 
<f:facet name="header"> 
    <h:outputText value="#{msgs.servers}"/> 
</f:facet> 
<rich:column filterValue="#{serverMB.serverNameFilter}" 
      filterExpression="#{fn:containsIgnoreCase(servers1.server_name,serverMB.serverNameFilter)}"> 
    <f:facet name="header"> 
     <h:outputText value="#{msgs.server_name}"/> 
     <h:inputText value="#{serverMB.serverNameFilter}"> 
      <a4j:ajax event="blur" render="table" execute="@this"/> 

     </h:inputText> 
    </f:facet> 
    <h:outputText value="#{servers1.server_name}"/> 

</rich:column> 
. 
. 
. 

和我managedbean是這樣

public List<Server> getAllServer() { 

    return serverFacade.findAll(); 
} 

我使用這種方法來顯示信息,所以沒有任何列表,我個人可以添加一行到它等等...... 所以我必須做什麼?

+0

'getAllServer'返回一個List。有你的名單 – kolossus

+0

,我可以在哪裏添加一個新的行? –

回答

1
  1. 您的serverList應該填充並設置爲類級變量。使用一個@PostConstruct方法來填充列表:

    @PostConstruct 
    public void initServerList(){ 
        //declare serverList as a class-scoped variable in your managed bean 
        serverList = serverFacade.findAll(); 
    } 
    
  2. 聲明的方法在你的託管bean將從JSF視圖,你會再使用添加到serverList

    public void incrementList(){ 
    
        Server server = new Server(); //create a dummy Server object 
        serverList.add(server); // List has been incremented. Be sure to AJAX-refresh the datatable after calling this method to reflect the new row. 
    } 
    
  3. 收集信息以填充虛設對象的字段:

    public void updateLatestServer(){ 
    
        Server lastServer = serverList.get(serverList.size-1); 
        lastServer.setName(serverNameFromView);  
        lastServer.setIP(IPFromView); 
    } 
    

    serverNameFromViewIPFromView是假設您將在JSF表單中收集的變量。

+0

感謝您的完整答案,你是對的,所以與填充serverList我不能做同樣的事情? –

+0

@omidhaghighatgoo我看不到如何。基本的java:當添加一個虛擬對象和更新虛擬對象時,需要使用相同的列表。設計由你決定。我的回答只是一個建議 – kolossus