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

Using Groovy expressions to resolve validation error message tokens

In this recipe, we will expand on the Using a custom validator based on a View Object accessor recipe to demonstrate how to use validation message parameter values based on Groovy expressions. Moreover, we will show how to retrieve the parameter values from a specific parameter bundle.

Groovy is a dynamic language that runs inside the Java Virtual Machine. In the context of the ADF Business Components framework, it can be used to provide declarative expressions that are interpreted at runtime. Groovy expressions can be used in validation rules, validation messages, and parameters, attribute initializations, bind variable initializations, and more.

Getting ready

This recipe builds on the Using a custom validator based on a View Object accessor recipe. It also relies on the recipes Breaking up the application in multiple workspaces and Setting up BC base classes presented in Chapter 1, Pre-requisites to Success: ADF Project Setup and Foundations.

How to do it...

  1. In the Application Navigator double-click on the Employee entity object definition and go to its Business Rules tab.
  2. Double-click on the validateDepartmentEmpoyeeCount Method Validator to bring up the Edit Validation Rule dialog and go to the Failure Handling tab.
  3. Change the Error Message to Department has reached maximum employee limit of {1}.
  4. For the Message Token 1 Expression in the Token Message Expressions section, enter the following expression:
    source.getBundleParameter('DepartmentEmployeeLimit')
    How to do it...
  5. Now, open the SharedComponets workspace and locate the entity framework extension class ExtEntityImpl. Add the following getBundleParameter() method to it:
    public String getBundleParameter(String parameterKey) {
      // use BundleUtils to load the parameter
      return BundleUtils.loadParameter(parameterKey);
    }
  6. Locate the BundleUtils helper class in the com.packt.jdeveloper.cookbook.shared.bc.exceptions.messages package and add the following loadParameter() method:
    public static String loadParameter(final String parameterKey) {
      // get access to the error message parameters bundle
      final ResourceBundle parametersBundle =
      ResourceBundle.getBundle(PARAMETERS_BUNDLE, Locale.getDefault());
      // get and return the the parameter value
      return parametersBundle.getString(PARAMETER_PREFIX +parameterKey);
    }
  7. Finally, locate the ErrorParams.properties property file and add the following text to it:
    parameter.DepartmentEmployeeLimit=2

How it works...

For this recipe, first we added a parameter to the method validator message. The parameter is indicated by adding parameter placeholders to the message using braces {}. The parameter name is indicated by the value within the braces. In our case, we defined a parameter called 1 by entering {1}. We then had to supply the parameter value. Instead of hardcoding the parameter value, we used the following Groovy expression:

source.getBundleParameter('DepartmentEmployeeLimit').

The source prefix allows us to reference an entity object method from the validator. In this case, the method is called getBundleParameter() . This method accepts a parameter key which is used to load the actual parameter value from the parameters bundle. In this case, we have used the DepartmentEmployeeLimit parameter key.

Then we implemented the getBundleParameter() method. We implemented this method in the base entity custom framework class so that it is available to all entity objects. If you look at the code in getBundleParameter(), you will see that it loads and returns the parameter value using the helper BundleUtils.loadParameter().

Note

We introduced the helper class BundleUtils while we worked on the Using a generic backing bean actions framework recipe in Chapter 1, Pre-requisites to Success: ADF Project Setup and Foundations.

The BundleUtils.loadParameter() method pre-pends the parameter with the prefix parameter.

Finally, we defined the parameter.DepartmentEmployeeLimit parameter in the ErrorParams.properties parameters bundle. For further information on this bundle, refer to the Using a custom exception class recipe in Chapter 1, Pre-requisites to Success: ADF Project Setup and Foundations. When the validation is raised at runtime, the message parameter placeholder {1}, which was originally defined in the message, will be substituted with the actual parameter value (in this case, the number 2).

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
  • Using a custom exception class, Chapter 1, Pre-requisites to Success: ADF Project Setup and Foundations
  • Using a generic backing bean actions framework, Chapter 1, Pre-requisites to Success: ADF Project Setup and Foundations
主站蜘蛛池模板: 彭山县| 磐石市| 扬中市| 乌拉特后旗| 清水河县| 腾冲县| 班玛县| 黎城县| 新乡县| 独山县| 大厂| 卓资县| 夏邑县| 周口市| 太和县| 池州市| 石泉县| 灵石县| 汾西县| 木里| 定安县| 澄城县| 吴堡县| 巴南区| 柘城县| 抚顺市| 泽州县| 那曲县| 达州市| 星子县| 平山县| 广宗县| 堆龙德庆县| 深水埗区| 施秉县| 宜春市| 裕民县| 文登市| 乌苏市| 嘉禾县| 宾川县|