当前位置: 首页 > 知识库问答 >
问题:

如何在每次jsf页面加载之前调用backingbean构造函数/方法?

徐绪
2023-03-14

我已经将会话管理为managedbean scope,现在在支持bean的构造函数中,我正在做一些验证,但是由于当用户第一次尝试点击upload页面时,bean的作用域是session,我正在调用托管bean的构造函数并进行一些验证,以查看用户是否有权访问上传页面。

所以在第一次尝试时,我调用构造函数,收到验证错误消息说,上传页面对用户不可用,但现在如果我转到任何其他选项卡并单击返回到上传页面菜单选项卡,该页面将显示,我如何更改此行为,以便在每次页面加载时检查验证,此外,我不能将managed scoped用作页面的request,因为我需要在同一会话中的不同请求之间维护一些信息。

代码如下:

支持Bean构造函数:

public Upload()
{
    ValidationStatus authorizeBean = validateUSER(user);                
}

面配置。xml

<managed-bean>
        <managed-bean-name>fileUpload</managed-bean-name>
        <managed-bean-class>Upload</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

有什么想法吗?

共有2个答案

慕通
2023-03-14

使用@PostConstruct

参考资料在这里。

JSF支持bean

@PostConstruct
public void initIt(){
}

@PreDestroy
public void cleanUp(){
}
常雅珺
2023-03-14

我认为豆子是做这件事的错误地方。我将使用servlet过滤器或JSF阶段侦听器来处理页面访问。

下面是使用servlet过滤器控制页面访问的示例。

 类似资料:
  • 问题内容: 传统上,要在页面加载后调用JavaScript函数,您需要在包含一些JavaScript的正文中添加一个属性(通常只调用一个函数) 页面加载后,我想运行一些JavaScript代码以使用服务器中的数据动态填充页面的某些部分。因为我使用的是JSP片段,所以我无法使用该属性,而JSP片段没有可以添加属性的元素。 还有其他方法可以在加载时调用JavaScript函数吗?我宁愿不使用jQuer

  • 我是新的反应,我试图用它开发一个简单的网络应用程序,但我得到了一个错误。当我加载一个类组件时,我的构造函数被调用两次,你能帮忙吗? 原木地被击中两次。在一些组件中,我希望进行一个命中DB的API调用,但我只想命中它一次。在许多情况下,使用并不方便,因为道具只出现在之后,因此我想在中调用(我不会使用setState,这会导致重新加载render)。 提前感谢

  • 我试图在页面加载时调用bean操作,bean在会话范围内注册。 我已经完成了这样的js:-document.getElementById('form1:show_data')。 我知道它可以通过调用bean构造函数中的操作来完成,但是在会话范围中,该操作只被调用一次。

  • 问题内容: 我试图监视一个对象,并且想在构造函数调用它之前对构造函数调用的方法进行存根。 我的课看起来像这样: 不能调用setup方法。好吧,我如何监视这种方法(以及存根设置,使其什么也不做)? 模拟方法可以很好地工作,但是我想进行单元测试,因此我将需要其他方法。 之所以需要对设置方法进行打桩以使其无能为力的原因: 我正在对Lego机器人(lejos)进行编程,并在设置中放入了一些代码,该代码需要

  • 我想在我的JSFWeb应用程序中实现一个像gmail这样的加载页面。 用户输入登录名和密码,我把他带到一个简单的进度条页面(加载应用程序页面)。 一旦进度条达到100%,应用程序页面就会显示出来。 (命中100%意味着它根据应用程序页面初始化的进度获得进度值)。 现在,我真正需要什么来实现这一点,支持bean范围、facelets数量、faces配置。。 其他信息: > @WebFilter(fi

  • 问题内容: 如果我有一个像这样的构造函数: 然后,我如何在与构造函数相同的类中的方法中使用变量c和d,因为尝试仅在方法中使用变量名似乎不起作用? 问题答案: 实际上,您的代码将无法编译- 无效。 我认为您的意思是:- 。 然后我如何在与构造函数相同的类中的方法中使用变量c和d 您不能这样做,因为您已将它们声明为局部变量,其范围在构造函数结束执行时终止。 您应该将它们声明为实例变量。