icefaces message无法显示

stenlylee 2008-04-12
如下代码:
页面
<ice:inputText id="userName" required="true" />
<ice:message for="userName" />


backing bean
FacesContext facesContext = FacesContext.getCurrentInstance();
facesContext.addMessage("userName", new FacesMessage(FacesMessage.SEVERITY_ERROR, "测试", ""));


页面上message显示不出来,console里面有打印出正确的message

把addMessage的"userName"换成null,也就是将文本框的消息编程全局消息,页面上的messages就能够正确显示

文本框的required消息能够正常显示,ice:message换成h:message一样的问题

有谁知道是什么问题么?到底是icefaces的问题还是JSF的问题?如果解决?
tailsherry 2008-04-14
这个addMessage在处理异常抛出的时候,是不能直接抛出到绑定的页面element上的,这可能是jsf1.2还没有解决的问题吧。

我想,你这里是想做到自定义的数据验证。可以考虑用validator

<ice:inputText id="userName" required="true" validator="#{bean.userNameValidator}" /> 
<ice:message for="userName" />

public void userNameValidator(FacesContext facesContext, UIComponent uiComponent, Object object) throws ValidatorException {
        String userName= (String) object;
        String msg = null;
        if (userName.length() < 6) {
            msg = "UserName must not be less than 6 characters long.";
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
            throw new ValidatorException(message);
        }
    }


stenlylee 2008-04-14
多谢楼上的解答,我自己搜遍google,终于找到个解决办法:
http://hi.baidu.com/stenlylee/blog/item/3fbc86d65070942a07088b28.html
lenves 2009-07-30
  老兄,想问下你不是设置了required=true吗 当你光标离开的时候那个提示信息怎么设置啊,谢谢了,就是我不在input里面输入值直接做下一步操作,那个message怎么设置啊,谢谢了
Global site tag (gtag.js) - Google Analytics