1

我用,

  • JSF
  • 春天
  • OCPSoft 重写
  • 玻璃鱼 4 / 码头 9

我注意到我的 bean两次调用@PostConstruct's方法。init()这是初始化两次的示例 bean,如果您需要web.xml或其他任何内容,只需发布​​它 - 我的想法已经用完了。

@ManagedBean(name = "userBean")
public class UserBean implements Serializable {

    private static final long serialVersionUID = -1347081883455053542L;
    @ManagedProperty(value = "#{param.username}")
    private String username;
    private Users user;
    private Authentication authentication;
    private StreamedContent avatar;

    @PostConstruct
    public void init() {
        System.out.println("userbean init and username: " + username);
        user = Users.findByUsername(username);
        authentication = SecurityContextHolder.getContext()
                .getAuthentication();
        if (user == null) {
            Navigator.redirect("/601");
            return;
        }
        if (user.isKeepPrivate() == true && !username.equals(authentication.getName())) {
            Navigator.redirect("/600");
            return;
        }
        avatar = new DefaultStreamedContent(UserUtils.getAvatar(user), "image/png");
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public StreamedContent getAvatar() {
        return avatar;
    }

    public void setAvatar(StreamedContent avatar) {
        this.avatar = avatar;
    }
}
4

1 回答 1

2

我们这里有这个问题,但是 WebSphere 6 有问题。(从 websphere 中逃跑:D)

所以......我们做了一些解决方法来使用@PostConstruct......
也许可以帮助你......

public boolean firstInit() {
    boolean firstInit= false;
        try {
            FacesContext context = FacesContext.getCurrentInstance();
            firstInit= context != null  && context.getExternalContext().getRequestParameterMap().containsKey(ResponseStateManager.VIEW_STATE_PARAM);
        } catch (Exception e) {
            firstInit= false;
        }
        return firstInit;
    }
public void init(){
if (firstInit()) return;
//init methods
}

并且@PostConstruct 方法为同一个请求调用了两次,这也可以帮助你......

obs:我不能写评论:/

于 2014-01-16T10:28:05.927 回答