Библиотеки PrettyFaces и Rewrite - как мы можем вызвать метод bean, прежде чем PrettyFaces установит атрибуты из параметров запроса URL? - PullRequest
0 голосов
/ 02 мая 2018

Мы используем библиотеку Prettyfaces и Rewrite в нашем проекте JSF.

Есть ли способ, как мы можем сбросить атрибуты bean (установить их в null), прежде чем PrettyFaces установит значения этих атрибутов из параметров запроса в URL? То есть мы можем вызвать метод для bean-компонента до того, как PrettyFaces установит значения?

1 Ответ

0 голосов
/ 07 мая 2018

Я считаю, что для этого проще всего было бы внедрить компонент в объект RewriteConfiguration. Вам нужно убедиться, что приоритет переопределен так, чтобы этот провайдер появлялся раньше, чем встроенная функциональность PrettyFaces (я думаю, что -10 должно сработать, но вам может потребоваться поиграть с этим значением):

public class ExampleConfigurationProvider extends HttpConfigurationProvider
{
   @Inject
   private MySessionBean bean;

   @Override
   public int priority()
   {
      return -10;
   }

   @Override
   public Configuration getConfiguration(final ServletContext context)
   {
      return ConfigurationBuilder.begin()
          .addRule()
          .when(Path.matches("/my-path").and(Direction.isInbound()))
          .perform(new HttpOperation() {
             @Override
             public void performHttp(HttpServletRewrite event, EvaluationContext context)
             {
                bean.clearValues();
             }
          });
   }
}

`` `

Обратите внимание, что правило .when() может содержать любые условия, которые вы хотите.

Возможно, есть и другие способы сделать это, но это самый простой из всех, что я мог придумать.

...