2013-05-18 3 views
0

Я хочу создать динамическое текстовое поле в jsf2 в datatable с текстовыми полями на основе нажатия кнопки добавления строки. Я новичок в программировании jsf. Может кто-нибудь скажет мне базовый пример для динамического поколения. Я прочитал ui:repeat и c: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 сведущих боб

@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() { 
} 
} 

Сотрудник класса (Вы можете использовать класс сущностей)

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

Смежные вопросы