Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PrettyFaces和重写库-在PrettyFaces从URL查询参数设置属性之前,我们如何调用bean方法?_Prettyfaces - Fatal编程技术网

PrettyFaces和重写库-在PrettyFaces从URL查询参数设置属性之前,我们如何调用bean方法?

PrettyFaces和重写库-在PrettyFaces从URL查询参数设置属性之前,我们如何调用bean方法?,prettyfaces,Prettyfaces,我们在JSF项目中使用Prettyfaces和重写库 在PrettyFaces从URL中的查询参数设置这些属性的值之前,有没有一种方法可以重置bean属性(将它们设置为null)? 也就是说,我们可以在PrettyFaces设置值之前调用bean上的方法吗?要实现这一点,我认为最简单的方法是将bean注入到一个RewriteConfiguration对象中。您需要确保优先级被覆盖,以使此提供程序出现在内置PrettyFaces功能之前(我认为-10应该可以,但您可能需要使用此值): ``` 注意

我们在JSF项目中使用Prettyfaces和重写库

在PrettyFaces从URL中的查询参数设置这些属性的值之前,有没有一种方法可以重置bean属性(将它们设置为null)?
也就是说,我们可以在PrettyFaces设置值之前调用bean上的方法吗?

要实现这一点,我认为最简单的方法是将bean注入到一个RewriteConfiguration对象中。您需要确保优先级被覆盖,以使此提供程序出现在内置PrettyFaces功能之前(我认为-10应该可以,但您可能需要使用此值):

```

注意,
.when()
规则可以包含您想要的任何条件


可能还有其他方法可以做到这一点,但这是我能想到的最简单的方法。

您使用的是哪个范围?使用“重写”时,通常应使用请求范围,而不会出现此问题。我们使用会话范围,因此需要重置属性。澄清了问题并删除了重复。谢谢。可以将
ExampleConfigurationProvider
Springbean和@RewriteConfiguration一起使用吗?我发现扩展了
HttpConfigurationProvider
的Springbean将通过重写自动获取用于配置的信息。但这不起作用。您需要添加模块。如果这不起作用,您可能希望查看这4个类并为您的Spring容器实现一个版本!欢迎光临!或者,您可以手动访问ConfigurationProvider中的spring上下文,使用SpringAPI以编程方式构造或请求所需的Bean。如果我有
ViewScoped
Bean怎么办?当我注入bean时,我得到的
ContextNotActiveException:WebBeans上下文的作用域类型注释@ViewScoped在当前线程中不存在
@arash在创建视图之前,不能使用
ViewScoped
bean。这就是为什么PrettyFaces将视图范围对象的注入和操作方法推迟到JSF生命周期期间。有关如何创建
HttpConfigurationProvider
的方法,请参见以下测试:@arash或,更简单的方法:
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();
             }
          });
   }
}