2012-10-29 20 views
0

表格和表格位於同一頁面上。當用戶添加表單詳細信息並單擊添加時,應將數據複製到表格中。在ViewScope中未正確添加數據表格值

當用戶輸入詳細信息並單擊第二次添加(表中已有的數據)時,第一個值被新值覆蓋,列表中的下一個爲空。

我們如何在表格中顯示兩個值。

Name.xhtml

<h:form> 
    <h:inputText value="#{bean.fName}"/> 
    <h:inputText value="#{bean.lName}"/> 

    <h:dataTable value="#{bean.list}" var="name"> 
    <h:column> 
     <h:outputText value="#{name.fName}"> 
    </h:column> 
    </h:dataTable> 
    <h:commandLink action="#{bean.add}"/> 
</h:form> 

Bean.java //豆類ViewScoped

@ManagedProperty(值= 「#{buyerTO}」) 保護BuyerTo buyerTO;

List buyerTTist = new ArrayList(); // BuyerTO是ViewScope

public String addBuyer(){ 
buyerTOList.add(buyerTO); 
buyerTO = new BuyerTO(); 
return ""; 

}

回答

2

你結束的視圖範圍內通過返回非null/void。您需要返回nullvoid以保留後續請求的查看範圍。

通過

return null; 

public void addBuyer() { 
    // ... 
    // No return statement. 
} 
+0

返回null不解決問題,請更換

return ""; 

。每次在頁面上單擊按鈕時都會創建一個新視圖。 – user679526

+0

顯然你已經將視圖範圍的bean的屬性綁定到在視圖構建時運行的某個標記/屬性。到目前爲止在問題中發佈的代碼並沒有表明這一點。所以這是其他地方引起的。有關詳細的背景信息,請轉到此答案:http://stackoverflow.com/questions/3342984/jstl-in-jsf2-facelets-makes-sense/3343681#3343681 – BalusC

+0

h:dataTable是我的代碼中的複合組件。看起來我們不能使用複合組件中的視圖範圍bean。 – user679526