【问题标题】:Adding multiple rows in database table from one JSF page in one go一次从一个 JSF 页面在数据库表中添加多行
【发布时间】:2011-05-18 19:12:17
【问题描述】:

我们可以从一个 JSF 页面一次性在数据库表中添加多行吗?

实际上我想制作一个考勤页面,我想一次性在一个 JSF 页面中获取所有员工的考勤,即当用户按下保存按钮时,所有员工的考勤将保存在数据库中。

是否可以使用托管 bean 和 JSF 页面来实现这一点?请给我一些想法,如何实现它?

我已经完成了单行的插入、查看、更新和删除。

【问题讨论】:

    标签: jsf jsf-2


    【解决方案1】:

    是的,只需使用<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>
    

    另见:

    【讨论】:

    • 谁能告诉我在上述情况下在数据库中存储多行的sql查询?
    • 这与 JSF 无关。按。提示:INSERT INTO ... VALUES ....
    • 我们不能通过使用会话范围的托管 bean 来实现它吗?
    • 你可以。它的唯一缺点是在同一会话中在多个浏览器选项卡中打开页面可能会产生不良副作用。
    • 我的回答中的数据表有输入组件,所以已经可以编辑了。
    猜你喜欢
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多