[RESOLVIDO]Alterando o itemLabel do selectOneMenu

Estou tendo problemas em conseguir mudar o meu selectItem do selectOneMenu conforme o status do meu projeto.
Ao clicar em alterar o status é vindo como default o “Selecione um Status” até ai tudo bem, o problema é quando eu seleciono uma opção e clico em cancelar, e quando eu vou editar outro status de outro projeto a opção anterior permanece selecionada, e ainda se o projeto já estiver um status, gostaria de trazer ele já pré-selecionado.
Segue o código abaixo do selectOneMenu:

      <h:outputLabel value="Status do Projeto: " style="font-weight: bold;"/>
                    <p:selectOneMenu value="#{projetoBean.projeto.status}">  
                        <f:selectItem itemLabel="Selecione um Status" itemValue="0"/>  
                        <f:selectItem itemLabel="Novo" itemValue="Novo" />  
                        <f:selectItem itemLabel="Aguardando Aprovação" itemValue="Aguardando Aprovação" />  
                        <f:selectItem itemLabel="Rejeitado" itemValue="Rejeitado" />  
                        <f:selectItem itemLabel="Aprovado" itemValue="Aprovado" />  
                        <f:selectItem itemLabel="Cancelado" itemValue="Cancelado" />  
                        <f:selectItem itemLabel="Andamento" itemValue="Andamento" />  
                        <f:selectItem itemLabel="Finalizado" itemValue="Finalizado" />  
                        
                    </p:selectOneMenu> 

Resumindo quero fazer o seguinte se meu projeto não tiver nenhum status quero que apareça “Selecione um Status”.
Se meu projeto já tiver um status quero que apareça o status do projeto já selecionada.
Já tentei em diversas formas, até com javascript mais não consegui atingir o esperado.
Gostaria também de já agradecer a ajuda de todos, Obrigado.

Cara eu sei fazer o que você está falando, mas de uma forma um pouco diferente da que você está tentando fazer. Exemplo, em vez de passar valores fixos na tag <f:selectItem itemLabel="Selecione um Status" itemValue="0"/> Eu passaria uma lista com a tag <f:selectItens /> e faria a consulta do valor inserido no banco de dados. Desta forma eu acho o mais conveniente e nem é tão complicado, basta consultar a apostila da caleum fj21, lá aborda temas como JSF2, JPA e Hibernate com uma forma bem didática de ser compreendida.

Opa, obrigado pela resposta.
Os valores são fixos pois essa lista não está no banco de dados, ao selecionar uma das opções é enviada para o bean o valor, para posteriormente ser salva, o problema é que não consigo mostrar do bean para a interface.
Eu entendi sua resposta mais estarei analisando para ver se é viável fazer isso no código atual.

Consegui resolver isso:

 <p:column style="width: 3%" rendered="#{permissoesBean.listaFuncaoADMIN or permissoesBean.listaFuncaoGESTOR}">
                        <p:commandButton id="btstatus" icon="ui-icon-flag"  title="Status do Projeto" disabled="#{p.status == 'Finalizado'or p.status == 'Cancelado' or p.status == 'Rejeitado' ? true:false}"
                                         oncomplete="sProjeto.show();" [b]update[/b]=":formProjeto:tabelaProjeto :status2" process="@this"> 
                            <f:setPropertyActionListener value="#{p}" target="#{projetoBean.projeto}"/>   
                        </p:commandButton>


                    </p:column>

estou atualizando o meu form do meu diaglo:

<p:dialog header="Status do Projeto" widgetVar="sProjeto" resizable="false" modal="true" width="350" height="130">  
            <h:form id="status2" >
                <h:panelGrid columns="3" styleClass="tamanho">

                    <h:outputLabel value="Status do Projeto: " style="font-weight: bold;"/>
                    <p:selectOneMenu id="somproj" value="#{projetoBean.projeto.status}" onchange="selecionaItem();">  
                        <f:selectItem itemLabel="Selecione um Status" itemValue="0"/>  
                        <f:selectItem itemLabel="Novo" itemValue="Novo" />  
                        <f:selectItem itemLabel="Aguardando Aprovação" itemValue="Aguardando Aprovação" />  
                        <f:selectItem itemLabel="Rejeitado" itemValue="Rejeitado" />  
                        <f:selectItem itemLabel="Aprovado" itemValue="Aprovado" />  
                        <f:selectItem itemLabel="Cancelado" itemValue="Cancelado" />  
                        <f:selectItem itemLabel="Andamento" itemValue="Andamento" />  
                        <f:selectItem itemLabel="Finalizado" itemValue="Finalizado" />  

                    </p:selectOneMenu> 
                    <h:outputText/> 


                </h:panelGrid>

                <br/>
                <p:separator style="width: 80%"/>
                <br/>

                <p:commandButton value="Salvar" action="#{projetoBean.salvar}" update=":formProjeto:tabelaProjeto :mensageProjeto :status2" onclick="sProjeto.hide();"  icon="ui-icon-disk"/>
                <p:commandButton value="Cancelar"  onclick="sProjeto.hide();" icon="ui-icon-close"/> 
                <!--//BOTÕES-->
            </h:form>

        </p:dialog>

funcionou perfeitamente.
Obrigado por me ajudar

Hmm bem bacana, que bom que conseguiu resolver :smiley: É ótimo quando isso acontece. Mas vou deixar outra sugestão, como os valores são fixos, tente usar uma classe Enum inserindo os nomes, pois em um futuras modificações no código, você não irá precisar modificar diretamente na view e sim no próprio código java. Neste exemplo, as coisas são bem simples, mas imagine que se você tivesse mais de 15 status, você teria que digitiar cada <h:selectItem> na mão, para contornar isso, bastaria você criar uma lista desta enum no seu controlador, e preencher a tela com todas as opções através desta lista. Exemplo:

Controlador:

	public Collection<EnumStatus> listarTodosStatus(){
		
		Collection<EnumStatus> listaDeStatus = Arrays.asList(EnumStatus.values()); 
		
		return listaDeStatus;
	}

Enumerator:

public enum EnumStatus {
	
	NOVO("novo", 1),
	
	AGUARDANDO_APROVACAO("aguardando aprovação", 2),
	
	REJEITADO("rejeitado", 3),
	
	APROVADO("aprovado", 4),
	
	CANCELADO("cancelado", 5),
	
	ANDAMENTO("andamento", 6),
	
	FINALIZADO("finalizado", 7);
	
	private String descricao;
	
	private int valor;
	
	private EnumStatus(final String descricao, final int valor) {
		
		this.descricao = descricao;
		
		this.valor = valor;
	}

	/**
	 * Retorna o valor do atributo <code>descricao</code>
	 *
	 * @return <code>String</code>
	 */
	public String getDescricao() {
		return descricao;
	}

	/**
	 * Define o valor do atributo <code>descricao</code>.
	 *
	 * @param descricao 
	 */
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	/**
	 * Retorna o valor do atributo <code>valor</code>
	 *
	 * @return <code>int</code>
	 */
	public int getValor() {
		return valor;
	}

	/**
	 * Define o valor do atributo <code>valor</code>.
	 *
	 * @param valor 
	 */
	public void setValor(int valor) {
		this.valor = valor;
	}

	/**
	 * Método responsável por representar um valor número da descrição da enumerator.
	 *
	 * @author Marcos Buganeme
	 *
	 * @return {@link Integer}
	 */
	public int getOrdinal(){
		
		return this.ordinal();
	}

Opa obrigado pela dica.