2013-05-18 75 views
0

我想在jsf2中創建數據表中的動態文本框,其中包含基於單擊添加行按鈕的文本框。 Iam是jsf編程的新手。有人告訴我一個動態生成的基本例子。我已閱讀ui:repeatc:foreach,但我需要一些實際的例子。在jsf2中創建動態輸入

回答

1

爲您的樣品,

XHTML代碼:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 
<h:head> 
</h:head> 
<h:body> 
    <h:form id="form1"> 
     <h:commandButton value="Add new Row" actionListener="#{myBean.addNewEmployee}"/> 
     <h:dataTable value="#{myBean.employeeList}" var="emp"> 
      <h:column> 
       <f:facet name="header"> 
        Employee Id 
       </f:facet> 
       #{emp.empId} 
      </h:column> 
      <h:column> 
       <h:inputText value="#{emp.empName}"/> 
      </h:column> 
     </h:dataTable> 
    </h:form> 
</h:body> 
</html> 

JSF manged豆

@ManagedBean 
@ViewScoped 
public class MyBean implements Serializable { 

List<Employee> employeeList; 

public List<Employee> getEmployeeList() { 
    return employeeList; 
} 

public void setEmployeeList(List<Employee> employeeList) { 
    this.employeeList = employeeList; 
} 

public void addNewEmployee(ActionEvent event) { 
    employeeList.add(new Employee(employeeList.size(), null)); 
} 

@PostConstruct 
public void init() { 
    employeeList = new ArrayList<Employee>(); 
    employeeList.add(new Employee(1, "Emp1")); 
    employeeList.add(new Employee(2, "Emp2")); 
} 

public MyBean() { 
} 
} 

Employee類(你可以用你的實體類)

public class Employee { 

Integer empId; 
String empName; 

public Integer getEmpId() { 
    return empId; 
} 

public void setEmpId(Integer empId) { 
    this.empId = empId; 
} 

public String getEmpName() { 
    return empName; 
} 

public void setEmpName(String empName) { 
    this.empName = empName; 
} 

public Employee(Integer empId, String empName) { 
    this.empId = empId; 
    this.empName = empName; 
} 

@Override 
public boolean equals(Object obj) { 
    if (obj == null) { 
     return false; 
    } 
    if (getClass() != obj.getClass()) { 
     return false; 
    } 
    final Employee other = (Employee) obj; 
    if (this.empId != other.empId && (this.empId == null || !this.empId.equals(other.empId))) { 
     return false; 
    } 
    return true; 
} 

@Override 
public int hashCode() { 
    int hash = 5; 
    hash = 41 * hash + (this.empId != null ? this.empId.hashCode() : 0); 
    return hash; 
} 
} 

你可以直接使用abov e代碼。同時,我建議使用PrimeFaces組件的先進操作

+0

感謝jitesh將嘗試 –

+0

將在創建按鈕的inputText的另一行單擊 –

+0

是的,它是加入新行與inputText的 – Jitesh