使用JSF 2.0 [重复]用页面加载参数初始化后备Bean

问题描述

||                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

        JSF 2.0具有preRender支持,应该可以解决您的问题。 JSF 2包含一个PreRenderViewEvent,它在视图参数完成处理之后但在呈现视图之前触发。可以使用标签注册预渲染视图侦听器,例如:
<f:metadata>
  <f:viewParam name=\"foo\" value=\"#{bean.foo}\"/>
  <f:event type=\"preRenderView\" listener=\"#{bean.doSomething}\"/>
</f:metadata>
    ,        您的豆子的范围是多少?无论如何,标有“ 1”的方法 创建bean时,注释将被调用一次。
@ManagedBean
@ViewScoped
public class LoginDetailsController() {
  private String customer_id;
// getters and setters for customer_id

  @PostConstruct
   public void init() {
      this.customer_id = fetch_the_value_from_somewhere;
    }
}
如果希望页面始终执行此方法,则无论是否已创建bean,都应按Tarun正确建议使用
PreRenderViewEvent
。但是请注意,每次呈现页面时都会触发此事件;即使用户刷新页面也是如此。 如果要使用
customerController
中的ѭ4from中的值,可以按如下方式注入
@ManagedBean
@ViewScoped
public class CustomerController() {
  @ManagedProperty(value=\"#{loginDetailsController}\")
  private LoginDetailsController loginDetailsController;
  private String customer_id;
// getters and setters for customer_id

   @PostConstruct
   public void init() {
      this.customer_id = loginDetailsController.getCustomer_id();
    }
    ,        这是我解决的方法: 由于LoginDetailsController是会话作用域的-customer_id总是被初始化。 所以-我加了
@ManagedProperty(value=\"#{loginDetailsController.customer_id}\") 
private String customer_id;
另外-customer_id的获取器和设置器。 正如Nikhil所说的那样,在LoginDetailsController上进行了一些更改。 然后,可以在Home.xhtml上使用ѭ8和其余的customerController初始化的customerController元素。 谢谢你们!