H:message h:messages

Gostaria de saber se algem poderia me dizer onde estou errando pois já fiz inumeros testes e ñ consegui resolver meu problema.

Bem tenho uma classe para pegar as mensagens.

public class Messages {

	public FacesContext getMessage(String msg) {

		FacesContext context = FacesContext.getCurrentInstance();
		ResourceBundle bundle = ResourceBundle.getBundle("messages", context
				.getViewRoot().getLocale());

		String mensagem = bundle.getString(msg);
		context.addMessage(null, new FacesMessage(mensagem, mensagem));

		return context;
	}

	public FacesContext getMessage(String id, String msg) {

		FacesContext context = FacesContext.getCurrentInstance();
		ResourceBundle bundle = ResourceBundle.getBundle("messages", context
				.getViewRoot().getLocale());

		String mensagem = bundle.getString(msg);
		context.addMessage(id, new FacesMessage(mensagem, mensagem));

		return context;
	}
}

Meu MBean q chama esta classe

public class GrupoMBean extends AbstractMBean<Grupo> {

	private static int _counter = 0;

	public GrupoMBean() {
		logger.info("NEW INSTANCE: " + getClass() + " : " + (++_counter));
		System.out
				.println("NEW INSTANCE: " + getClass() + " : " + (++_counter));
	}

	public String salvar() {

		try {
			if (grupoVO.getGrpCodigo() != null) {

				editar();
			} else {

				incluir();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} catch (Throwable e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return "formGrupo";
	}

	private void incluir() throws Exception {
		TipoGrupoVO tipoVO = null;
		StatusGrupoVO statusVO = null;

		Long idTipo = tipoSelect;
		Long idStatus = statusSelect;

		tipoVO = getDelegate().consultarTipoGrupo(idTipo);
		statusVO = getDelegate().consultarStatusGrupo(idStatus);

		// TODO: implementar o setDominio()
		DominioVO d = new DominioVO();
		d.setDomCodigo("1");

		grupoVO.setDominioVO(d);
		grupoVO.setTipoGrupoVO(tipoVO);
		grupoVO.setStatusGrupoVO(statusVO);

		grupoVO.setGrpCodigo((Long) getDelegate().incluirGrupo(grupoVO));
		// if(((Long)getDelegate().incluirGrupo(grupoVO))==-1){
		// TODO: Implementar uma mensagem de de erro para o ususario
		// }

		FacesContext context = FacesContext.getCurrentInstance();
		ResourceBundle bundle = ResourceBundle.getBundle("messages", context
				.getViewRoot().getLocale());

		String mensagem = bundle.getString("msgGrupoIncluso");
		context.addMessage("salvar", new FacesMessage(
				FacesMessage.SEVERITY_WARN, mensagem, mensagem));

		Messages msgs = new Messages();
		msgs.getMessage("salvar", "msgGrupoIncluso");
		msgs.getMessage("msgGrupoAlterado");
		System.out.println(msgs.getMessage("salvar", "msgGrupoIncluso"));
	}

	private void editar() {

		TipoGrupoVO tipoVO = null;
		StatusGrupoVO statusVO = null;

		Long idTipo = tipoSelect;
		Long idStatus = statusSelect;

		try {
			tipoVO = getDelegate().consultarTipoGrupo(idTipo);
			statusVO = getDelegate().consultarStatusGrupo(idStatus);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		grupoVO.setTipoGrupoVO(tipoVO);
		grupoVO.setStatusGrupoVO(statusVO);

		try {
			getDelegate().alterarGrupo(grupoVO);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Throwable e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		Messages msgs = new Messages();
		msgs.getMessage("salvar", "msgGrupoAlterado");
		msgs.getMessage("msgGrupoAlterado");
		
		System.out.println("MENSAGEM: "+msgs.getMessage("salvar", "msgGrupoAlterado"));
		System.out.println("CONTEXT: "+msgs.getMessage("msgGrupoAlterado"));
	}
}

E meu for

			<h:form class="form" id="formGrupo">
				<fieldset>
					<ol>
						<li>
							<h:outputLabel value="#{msgs.labelCodigo}"/>
							<h:outputText value="#{grupoMBean.grupoVO.grpCodigo}" />
							<!--  <input jsfc="h:inputHidden" value="#{grupoMBean.grupoVO.grpCodigo}" 
									id="codigo" name="codigo" type="hidden" />-->
						</li>
						<li>
							<h:outputLabel value="#{msgs.labelNome}" for="nome"/>
							<h:inputText id="nome" 
											label="#{msgs.labelNome}" 
											name="nome" 
											maxlength="30" 
											value="#{grupoMBean.grupoVO.grpNome}"
											required="true"
											onblur="this.className='border';" 
											onfocus="this.className='border focus';" 
											requiredMessage="#{msgs.msgCampoObrigatorio}"/>
							<h:message for="nome" />
						</li>
						<li>
							<h:outputLabel value="#{msgs.labelTipo}" for="tipo"/>
							<h:selectOneMenu id="tipo" 
											 name="tipo"
											 required="true"
											 requiredMessage="#{msgs.msgCampoObrigatorio}" 
											 value="#{grupoMBean.tipoSelect}" 
											 class="border" >
								<f:selectItems id="tipos" value="#{grupoMBean.comboTipos}" />
							</h:selectOneMenu>
							<h:message for="tipo" />
						</li>
						<li>
							<h:outputLabel value="#{msgs.labelStatus}" for="status"/>
							<h:selectOneMenu id="status" 
											 name="status"
											 required="true" 
											 requiredMessage="#{msgs.msgCampoObrigatorio}"
											 value="#{grupoMBean.statusSelect}" 
											 class="border" >
								<f:selectItems id="statuss" value="#{grupoMBean.comboStatus}" />
							</h:selectOneMenu>
							<h:message for="status" />
						</li>
						<li>
							<h:outputLabel value="#{msgs.labelTempoSupervisor}" />
							<h:inputText id="tempoSupervisor" 
										 name="tempoSupervisor"
										 required="true" 
										 requiredMessage="#{msgs.msgCampoObrigatorio}"
										 value="#{grupoMBean.grupoVO.grpTemposup}" 
										 type="text"
										 maxlength="4" 
										 class="border" 
										 onblur="this.className='border';"
										 onfocus="this.className='border focus';" />
							<h:message for="tempoSupervisor" />
						</li>
					</ol>
				</fieldset>
				<p>
					<a jsfc="h:commandLink" 
						action="#{grupoMBean.salvar}"
						id="salvar"
						href="javascript:void(null);" 
						class="button"
						onclick="this.blur();" 
						onkeypress="this.blur();">
						<strong>#{msgs.buttonSalvar}</strong>
					</a>
					<a href="javascript:history.back();" class="button" 
							onclick="this.blur();" onkeypress="this.blur();">
						<strong>#{msgs.buttonCancelar}</strong>
					</a>
					<a jsfc="h:commandLink" action="#{grupoMBean.vaiPaPQP}" id="pqp"
							immediate="true"
							href="javascript:void(null);" class="button" 
							onclick="this.blur();" onkeypress="this.blur();">
						<strong>pqp</strong>
					</a>
					<br />
					<h:messages showSummary="true" showDetail="true" style="color: blue" />
					<h:message for="salvar" showSummary="true" showDetail="true" style="color: red" />
				</p>
			</h:form>

e ao executar nada acontece ñ me retorna nenhuma mensage o meu sysout mostra a mensagem correta como esta no meu arquivo de properties mais na página a mesma ñ aparece.

Se qlguem puder enchergar oude estou errando e puder me ajudar fico muito grato.