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