Uploaded image for project: 'MyFaces CODI'
  1. MyFaces CODI
  2. EXTCDI-125

pagebeans as package based inline view-configs

    XMLWordPrintableJSON

Details

    Description

      it should be possible to use @Page directly at page-beans.

      rules:

      • if @Page is used at a class which also hosts @Named or @ManagedBean, there shouldn't be a veto
      • instead of nested classes btw. interfaces one part of the package info should be used
      • in the root package there has to be a marker class with the annotation @InlineViewConfigRoot(optionally an explicit basePath should be possible)
      • the page-bean class is automatically used as view-controller

      known restrictions:

      • only use it for simple apps - the concept itself doesn't support a page-bean for multiple pages, however, if needed it's possible to use it side by side with the normal view-config approach

      example 1:

      package my.package.pages;

      @InlineViewConfigRoot
      public final class Pages
      {
      }

      package my.package.pages.registration;
      //...

      @Named
      @RequestScoped
      @Page
      public class RegistrationStep1 implements ViewConfig
      {
      public Class<? extends ViewConfig> confirm()

      { //... return RegistrationStep2Page.class; }

      }

      //will be interpreted as /pages/registration/registrationStep1.xhtml

      example 2:

      package my.package.pages;

      @InlineViewConfigRoot(basePath = "/pages/", pageBeanPostfix = "Page")
      public final class Pages
      {
      }

      package my.package.pages.registration;
      //...

      @Named
      @RequestScoped
      @Page
      public class RegistrationStep2Page implements ViewConfig
      {
      //...
      }

      //will be interpreted as /pages/registrationStep2.xhtml

      example 3:

      package my.package.pages;

      @InlineViewConfigRoot(basePath = "/*", pageBeanPostfix = "Page")
      public final class Pages
      {
      }

      package my.package.pages.registration;
      //...

      @Named
      @RequestScoped
      @Page
      public class RegistrationStep3Page implements ViewConfig
      {
      //...
      }

      //will be interpreted as /registration/registrationStep3.xhtml

      example 4:

      package my.package.pages;

      @InlineViewConfigRoot(basePath = "/views/*")
      public final class Pages
      {
      }

      package my.package.pages.registration;
      //...

      @Named
      @RequestScoped
      @Page
      public class RegistrationStep4 implements ViewConfig
      {
      //...
      }

      //will be interpreted as /views/registration/registrationStep4.xhtml

      Attachments

        Activity

          People

            gpetracek Gerhard Petracek
            gpetracek Gerhard Petracek
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: