NetBeans下使用Java Persistence API修改数据库表行(二)

文是本系列文章(共两篇)的第二部分。在第一篇文章(在Visual Web应用程序中使用Java Persistence API) 中,您已了解了如何使用Java Persistence API访问数据库表和检索其中的数据,以及如何使用Visual Web Table组件显示该数据。在本文中,我将介绍如何使用相同的Java Persistence APIVisual Web Table组件添加、更新和删除数据库表行。

有关如何使用NetBeans IDE的更多信息,请参阅NetBeans网站上的支持和文档

您还必须执行其他一些属性绑定。

1.        您需要为已放置Radio Button的表格列绑定一些属性。在我们的示例中,此表格列为tableColumn5 Navigator窗口中选择该表格列(或者在Design窗口中单击该列),从上下文菜单中打开Properties Binding对话框,然后设置两个属性。您必须手动输入这些绑定表达式。如前所示,设置每一属性之后单击Apply按钮。

o        onClick属性设置为setTimeout(‘initAllRows()’,0)。当前绑定字段很有可能不会反映应用属性之后的新绑定表达式。即使如此,绑定仍应显示在 JSP 代码中。

o        selectId属性设置为#{Page1.radioButton1.id}

完成之后,tableColumn5标记的JSP代码应如下所示:

代码示例7tableColumn5JSP标记

<webuijsf:tableColumn binding="#{Page1.tableColumn5}" id="tableColumn5" onClick="setTimeout('initAllRows()', 0)" selectId="#{Page1.radioButton1.id}">

2.        现在,将表格表行组(在我们的示例中为tableRowGroup1)中的selected属性绑定为selectedState。新绑定表达式应为#{Page1.selectedState},如图9中所示。标记 tableRowGroupJSP代码应如下所示:

代码示例8tableRowGroup1JSP标记


<webuijsf:tableRowGroup binding="#{Page1.tableRowGroup1}" id="tableRowGroup1" rows="10" selected="#{Page1.selectedState}" sourceData="#{SessionBean1.users}" sourceVar="currentRow"

编写按钮处理程序方法的代码

您 需要将一些代码添加到Page1中的AddUpdate按钮操作处理程序。(这两个按钮位于紧挨表格下方的buttonPanel中。) 随后,我们将您添加到操作处理程序方法的代码替换页面底部的两个按钮(Add RecordUpdate Record按钮)。

此代码还需要两个布尔变量,当您更新按钮操作处理程序方法时,需要添加这两个布尔变量。设置所有按钮操作处理程序之后,需要将一些自定义代码添加到prerender方法。

创建布尔变量

将两个布尔变量添加到Page1.java源文件。调用addRequestupdateRequest变量并将这两个值设置为错误。在源文件中,您会看到以下语句。

代码示例9:在Page1.java中创建布尔变量

private boolean addRequest = false;
private boolean updateRequest = false;

编写按钮操作处理程序方法

将代码添加到Add按钮的addButton_action方法。已添加的代码将标志(addRequest)设置为正确,以便启用addUpdatePanel,它包含用户名、密码和电子邮件地址等条目字段。prerender方法使用这些布尔值确定addUpdatePanel的处理。

Design窗口中双击页面上的添加按钮,在 Java 源编辑器中打开按钮代码。向将addRequest设置为正确的addButton_action方法添加一行。操作处理程序应如下所示:

代码示例10:添加按钮操作处理程序方法

private boolean addRequest = false;
  public String addButton_action() {
  addRequest = true;
  return null;
}

注意: 如果通过单击Java选项卡而非双击该按钮打开Page1Java源文件,您将不会看到该按钮的操作处理程序方法。当双击按钮时,方便起见,IDE将为操作处理程序添加一个空方法,您只需要添加代码的自定义行即可。

双击Update按钮打开updateButton_action方法并添加以下代码。与addButton操作处理程序一样,此代码将布尔updateRequest设置为正确,从而启用addUpdatePanel。操作处理程序应如下所示:

代码示例11:更新按钮操作处理程序方法

private boolean updateRequest = false;
public String updateButton_action() {
  updateRequest = true;
  return null;
}

现在,将代码添加到Delete按钮程序处理程序,从而当单击按钮时,从数据库中删除表格的所选行。此代码从tableRowGroup1首先获取所选RowKey。它使用RowKey索引确定并获取Users表格中的相应行。然后调用UserController.removeUser方法,将其传递给行标识符,然后removeUser从数据库中删除所选行。在将此代码添加到Page1.java文件之后,您很可能需要使用Fix Imports函数。

代码示例12:删除按钮操作处理程序方法

public String deleteButton_action() {
        if (getTableRowGroup1().getSelectedRowsCount() > 0){
          RowKey[] selectedRowKeys = getTableRowGroup1().getSelectedRowKeys();
          Users[] users = getSessionBean1().getUsers();
          int rowId = Integer.parseInt(selectedRowKeys[0].getRowId());
          Users user = users[rowId];
          // Remove the Entity from the database using UserController
          UserController userController = new UserController();
          userController.removeUser(user);
        }
        return null;
}

编写创建实体Bean的代码并添加到数据库

现在,您将准备把代码添加到Add RecordUpdate Record操作处理程序方法。添加记录操作处理程序的代码抓取输入到addUpdatePanel字段的数据,并且创建包括Users表格中一行数据的一个新实体bean。然后,它调用UserController方法addUser将此实体bean数据添加到数据库。同时,它还将布尔updateRequest设置为错误。随后,在按钮操作处理程序完成之后,将代码添加到prerender方法,以便使用布尔变量updateRequestaddRequest确定所采取的处理路径。

双击Design窗口中的Add Record按钮,在Java源编辑器中打开addRecordButton操作处理程序。然后,将下列代码添加到方法。完整方法应如下所示:

代码示例13:添加记录按钮操作处理程序方法

    public String addRecordButton_action() {
        // Create a new User Entity
        Users newUser = new Users();
        newUser.setUsername((String) userNameField.getText());
        newUser.setPassword((String) passwordField.getText());
        newUser.setEmailAddress((String) emailAddressField.getText());
        // Add the new Entity to the database using UserController
        UserController userController = new UserController();
        userController.addUser(newUser);
        updateRequest = false;
        return null;
    }

编写更新数据库记录的代码

将代码添加到Update Record按钮的操作处理程序,以便更新数据库中的现有记录。操作处理程序抓取由用户输入在addUpdatePanel字段中的数据,并且将该数据写至数据库记录。

双击Update Record按钮,在Java源编辑器中打开updateRecordButton_action操作处理程序,并将下列代码添加到操作处理程序。已添加的代码使用表格中的当前选择首先获取Users实体bean。它可以用在addUpdatePanel字段中输入的数据更新Users字段,然后调用UserController.updateUser方法用实体bean数据更新数据库数据。完成的操作处理程序应如下所示:

代码示例14:更新记录按钮操作处理程序方法

    public String updateRecordButton_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        // Create a new Users Entity
        RowKey[] selectedRowKeys = getTableRowGroup1().getSelectedRowKeys();
        Users[] users = getSessionBean1().getUsers();
        int rowId = Integer.parseInt(selectedRowKeys[0].getRowId());
        Users user = users[rowId];
        user.setUsername((String) userNameField.getText());
        user.setPassword((String) passwordField.getText());
        user.setEmailAddress((String) emailAddressField.getText());
        // Update the database table data using UserController
        UserController userController = new UserController();
        userController.updateUser(user);
        addRequest = false;
        return null;
    }

修改控制页面显示的prerender方法

页面上的prerender方法可以设置页面显示的任何自定义参数,并且在显示页面之前予以调用。您添加到prerender方法的以下代码,使用布尔值addRequestupdateRequest确定是否显示或隐藏addUpdatePanel。它还可以根据是否发生修改或增加数据来更新用户数据的显示。

代码示例15:已修改的prerender方法

     public void prerender() {
        if(addRequest){
            addUpdatePanel.setRendered(true);
            addRecordButton.setRendered(true);
            updateRecordButton.setRendered(false);
            userNameField.setText("");
            passwordField.setText("");
            emailAddressField.setText("");
        }else if (updateRequest){
            if (getTableRowGroup1().getSelectedRowsCount() > 0){
                // Get the data from the selected Entity and update the fields
                RowKey[] selectedRowKeys = getTableRowGroup1().getSelectedRowKeys();
                Users[] users = (Users[]) getSessionBean1().getUsers();
                int rowId = Integer.parseInt(selectedRowKeys[0].getRowId());
                Users user = users[rowId];
                userNameField.setText(user.getUsername());
                passwordField.setText(user.getPassword());
                emailAddressField.setText(user.getEmailAddress());
                
                addUpdatePanel.setRendered(true);
                addRecordButton.setRendered(false);
                updateRecordButton.setRendered(true);
            }
        }else{
            addUpdatePanel.setRendered(false);
        }
        // Refresh the users data array in the session bean to to show
        // the newly added data or modified data in the Table Component
        getSessionBean1().updateUsers();
    }

运行应用程序

现在,您准备开始构建和运行TestWebApp应用程序。右键单击Projects窗口中的TestWebApp,然后选择Run Project选项。当在浏览器中打开页面时,显示效果非常类似于从企业级应用程序看到的那样。

9:浏览器中运行的TestWebApp

您可以修改现有记录的信息,以及添加新记录和删除现有记录。页面显示的更改取决于您所选择的按钮。例如,如果您要修改现有用户记录,请选中该记录的单选按钮,然后单击Update按钮。浏览器窗口显示所选记录的字段,然后您可以根据需要进行修改。单击Update Record按钮保存对数据库的任何更改。

10:更新用户记录

结束语

本文向您介绍了如何修改您以前已设置的项目,以便使用Java Persistence API访问数据库。您了解了如何使用Java Persistence API修改现有数据库记录、添加新记录和删除记录。此外,本文还介绍了如何使用Visual Web组件和功能创建专业外观的网页。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值