开发者

@postConstruct in JSF 1.1

开发者 https://www.devze.com 2023-03-18 04:19 出处:网络
How do I simulate the @postConstruct behaviour开发者_运维问答 in JSF 1.1 like as in JSF 1.2 and newer?

How do I simulate the @postConstruct behaviour开发者_运维问答 in JSF 1.1 like as in JSF 1.2 and newer?

Actually, I want to call a bean method automatically during page loading?

I am using IceFaces 1.8 on JSF 1.1.


The point of @PostConstruct is to provide a hook to execute some code after all managed properties (as in <managed-property> or @ManagedProperty) are been set and all dependency injections (e.g. @EJB, @Resource, @Inject and so on) have taken place.

If you don't have any of them, just use the bean's constructor.

public class Bean {

    public Bean() {
        // Just do your job here. Don't do it the hard way.
    }

    // ...
}

Or if you actually want to execute it when a specific property has been set, then do the job in the setter while null-checking the current property value.

public class Bean {

    private SomeObject someManagedProperty;

    public void setSomeManagedProperty(someManagedProperty) {
        if (this.someManagedProperty == null && someManagedProperty != null) {
            // First-time set, now you can do your job here.
        }

        this.someManagedProperty = someManagedProperty;
    }

    // ...
}

Update as per the comments:

I meant to execute the method every time the page is loaded

The @PostConstruct doesn't do that. However, if the bean is request scoped, then you will see the same effect. You seem to be using a session or application scoped managed bean to manage request scoped data. This is in essence wrong. You should convert it to a request scoped bean. Any real session scoped data can be split into a session scoped bean which you then inject by <managed-property>.

0

精彩评论

暂无评论...
验证码 换一张
取 消