Last time I checked, the jira issue was open (you can check it here). The problem is that FacesMessages contract states that messages are applied to controls by the component id (the jsf tree component), and NOT the client id (the generated HTML id). In case of a list this approach fails, since many components share the same component id. Try using this instead:
FacesMessage msg = new FacesMessage( SEVERITY_ERROR, msgTxt, msgTxt ); FacesContext.getCurrentInstance().addMessage( clientId, msg );
thanks much, that worked...added my vote to the jira issue as well.