2012-12-23 54 views
0

我能夠渲染動態,但不知道如何在後端獲取這些動態創建的值。如何獲得動態呈現<h:inputText> JSF後端的值

test.xhtml

<h:form> 
     Insert Your Desire Number : <h:inputText value="#{bean.number}"> 
     <f:ajax listener="#{bean.submitAjax}" execute="@form" render="@form" event="keyup" /> 
     </h:inputText> 
     <br></br> 
     <h:outputText value="#{bean.text}" /> 
     <h:dataTable value="#{bean.items}" var="item"> 
      <h:column> 
       <h:inputText value="#{item.value}" /> 
      </h:column> 
     </h:dataTable> 
     <h:commandButton value="Submit" action="#{item.submit}" /> 

    </h:form> 

如果我呈現3個輸入框,當我提交按鈕,我只得到了最後的值,可有人指導我如何我可以

豆。 java的

@ManagedBean(name="bean") 
@SessionScoped 
public class Bean { 
private int number; 
private List<Item> items; 
private Item item; 
//getter and setter are omitted 
public void submitAjax(AjaxBehaviorEvent event) 
{ 
    items = new ArrayList<Item>(); 
    for (int i = 0; i < number; i++) { 
     items.add(new Item()); 
    } 
} 
} 

Item.java

private String value; 
//getter and setter are omitted 
public void submit() { 
     System.out.println("Form Value : "+value); 

}

回答

1

submit()方法是放錯了地方。你應該把它放在託管bean上,而不是放在實體上。

這樣的話,

<h:commandButton value="Submit" action="#{bean.submit}" /> 

public void submit() { 
    for (Item item : items) { 
     System.out.println(item.getValue()); 
    } 
} 

或者更正式,

@EJB 
private ItemService service; 

public void submit() { 
    service.save(items); 
} 
+0

感謝名單兄弟,現在的工作......但一開始我也做相同的,但它當時沒有工作。 –

+0

順便說一下,你可以告訴我ItemService類,請... –

+1

這只是一個'@ Stateless' EJB。如果您以前從未使用過/創建過EJB,請轉到以下相關答案:http://stackoverflow.com/a/13012973和http://stackoverflow.com/a/8627413(更新部分) – BalusC