官术网_书友最值得收藏!

Using getPostedAttribute() to determine the posted attribute's value

There are times when you need to get the original database value of an entity object atttribute, such as when you want to compare the attribute's current value to the original database value. In this recipe, we will illustrate how to do this by utilizing the getPostedAttribute() method.

Getting ready

We will be working on the SharedComponets workspace. We will add a helper method to the custom entity framework class.

How to do it...

  1. Start by opening the SharedComponets workspace. If needed, follow the steps in the referenced recipe to create it.
  2. Locate the custom entity framework class and open it into the source editor.
  3. Add the following code to the custom entity framework class:
    /**
    * Check if attribute's value differs from its posted value
    * @param attrIdx the attribute index
    * @return
    */
    public boolean isAttrValueChanged(int attrIdx) {
      // get the attribute's posted value
      Object postedValue = getPostedAttribute(attrIdx);
      // get the attribute's current value
      Object newValue = getAttributeInternal(attrIdx);
      // return true if attribute value differs from its posted value
      return isAttributeChanged(attrIdx) &&((postedValue == null && newValue != null) ||(postedValue != null && newValue == null) ||(postedValue != null && newValue != null &&!newValue.equals(postedValue)));
    }

How it works...

We added a helper method called isAttrValueChanged() to the our custom entity framework class. This method accepts the attribute's index. The attribute index is generated and maintained by JDeveloper itself. The method first calls getPostedAttribute() specifying the attribute index to retrieve the attribute value that was posted to the database. This is the attribute's database value. Then it calls getAttributeInternal() using the same attribute index to determine the current attribute value. The two values are then compared. The method isAttributeChanged() returns true if the attribute value was changed in the current transaction.

The following is an example of calling isAttrValueChanged() from an entity implementation class to determine whether the current value of the employee's last name differs from the value that was posted to the database:

super.isAttrValueChanged(this.LASTNAME);

See also

  • Breaking up the application in multiple workspaces, Chapter 1, Pre-requisites to Success: ADF Project Setup and Foundations
  • Setting up BC base classes, Chapter 1, Pre-requisites to Success: ADF Project Setup and Foundations
主站蜘蛛池模板: 洪湖市| 景德镇市| 淮北市| 安乡县| 惠来县| 万源市| 霍林郭勒市| 英德市| 宁海县| 山丹县| 伊春市| 年辖:市辖区| 纳雍县| 鄂托克旗| 克什克腾旗| 阳新县| 广河县| 临猗县| 莒南县| 永川市| 乡城县| 巩留县| 佳木斯市| 遂溪县| 绥阳县| 浪卡子县| 阜宁县| 泗洪县| 鄂伦春自治旗| 礼泉县| 阿拉善左旗| 德清县| 屏东县| 三江| 崇信县| 宜章县| 南乐县| 洞口县| 东方市| 丹巴县| 钟山县|