1

为什么第一个块中的代码有效而另一个无效?一切都是为了显示 JSF 消息

@PostConstruct
public void init() {
    try {
        throw new RuntimeException();
    } catch (RuntimeException e) {
        i18nExceptionHandler.handleException(e);
    }
}

上面的代码运行良好 - 它显示了消息。

public String login() {
    try {
       //login actions
    } catch (AuthenticationException e) {
      //this doesn't work
        i18nExceptionHandler.handleException(e);
    }
    return "/pages/loggedin?faces-redirect=true";
}

此代码不起作用 - 它不显示任何消息,并且我收到以下错误:

WARNING: There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered.

为什么它会这样工作?我应该在登录方法(以及其他方法)上使用验证器或其他东西吗?

4

2 回答 2

1

您需要在 jsf 页面中包含 h:messages 标记。例如,

<h:messages id="messagesID" globalOnly="true" layout="table" />

如果您的 JSF 页面中没有此内容,则会出现警告消息。

于 2013-10-28T09:50:11.500 回答
0

没有显示来自第二个代码块的消息,因为方法没有 void 签名。

于 2013-11-02T17:02:22.617 回答