【发布时间】:2011-05-18 19:12:17
【问题描述】:
我们可以从一个 JSF 页面一次性在数据库表中添加多行吗?
实际上我想制作一个考勤页面,我想一次性在一个 JSF 页面中获取所有员工的考勤,即当用户按下保存按钮时,所有员工的考勤将保存在数据库中。
是否可以使用托管 bean 和 JSF 页面来实现这一点?请给我一些想法,如何实现它?
我已经完成了单行的插入、查看、更新和删除。
【问题讨论】:
我们可以从一个 JSF 页面一次性在数据库表中添加多行吗?
实际上我想制作一个考勤页面,我想一次性在一个 JSF 页面中获取所有员工的考勤,即当用户按下保存按钮时,所有员工的考勤将保存在数据库中。
是否可以使用托管 bean 和 JSF 页面来实现这一点?请给我一些想法,如何实现它?
我已经完成了单行的插入、查看、更新和删除。
【问题讨论】:
是的,只需使用<h:dataTable>。想象一下,你有一个这样的豆子
@ManagedBean
@ViewScoped
public class EmployeeManager {
private List<Employee> employees;
@EJB
private EmployeeService employeeService;
@PostConstruct
public void init() {
employees = new ArrayList<Employee>();
employees.add(new Employee());
employees.add(new Employee());
employees.add(new Employee());
// ...
// Do whatever you find necessary. Maybe offer an `Add row` button?
}
public void save() {
employeeService.save(employees);
// ...
}
// ...
}
那么你可以如下呈现它
<h:form>
<h:dataTable value="#{employeeManager.employees}" var="employee">
<h:column><h:inputText value="#{employee.firstname}" /></h:column>
<h:column><h:inputText value="#{employee.lastname}" /></h:column>
<h:column><h:inputText value="#{employee.email}" /></h:column>
</h:dataTable>
<h:commandButton value="Save" action="#{employeeManager.save}" />
</h:form>
@ViewScoped - 包含一个 CRUD 示例【讨论】:
。提示:INSERT INTO ... VALUES ....