Dúvida - Como passo o objeto nessa situação?

Galera do GUJ,
é o seguinte: tenho uma tabela com resultado de uma consulta e nessa tabela tem uma coluna de Status, onde status pode ser Ativo, Inativo, Pendente. Só que ao invéz de mostrar o texto escrito, ele retorna uma imagem de acordo com o status.
Código:

.
.
.
<rich:column  style="width:50px;" filterValue="#{corretorPessoa.statusCorretor}">
  <f:facet name="header">
	<h:outputText value="Status" />
  </f:facet>
  <s:div style="float:center; text-align:center;">
	<h:commandLink title="#{corretorPessoa.statusCorretor.nomeStatus}"  actionListener="#{corretorAction.alterarStatus(corretorDados)}" onclick="return confirm('Deseja realmente alterar o status desse corretor?');" >
		<a4j:support event="onchange" limitToList="true" ajaxSingle="true" bypassUpdates="false" reRender="resultado" />
		<img   />
	&lt;/h:commandLink&gt;
  &lt;/s:div&gt;
&lt;/rich:column&gt;
.
.
.

Até ai blz.
Agora que vem o pro. Quando eu clicar na imagem, por exemplo, imagem relacionada ao status Ativo ele alterar no banco para Inativo. O relacionamento entre as tabelas é a seguinte:
Tabela Corretor <-> Tabela Status

Entity Corretor

@Entity
@Table(name = &quot;Corretor&quot;, schema = &quot;ev&quot;)
@NamedQueries({ 
.
.
.	
})

public class CorretorPessoa implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = &quot;idCorretor&quot; , unique=true , nullable=false)
	private Integer idCorretor;
.
.
.
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name=&quot;Status_idStatus&quot;)
	private StatusCorretor statusCorretor = new StatusCorretor();
.
.
.
	public StatusCorretor getStatusCorretor() {
		return statusCorretor;
	}

	public void setStatusCorretor(StatusCorretor statusCorretor) {
		this.statusCorretor = statusCorretor;
	}

	public String getImgSituacao(String status) {
		if(status.equals(&quot;Ativo&quot;)){
			return &quot;../../../../img/icon_ativo.png&quot;;
		} else if(status.equals(&quot;Inativo&quot;)){
			return &quot;../../../../img/icon_inativo.png&quot;;
		}
		return &quot;../../../../img/icon_pendente.png&quot;;
	}
.
.
.
}

Entity StatusCorretor

@Entity
@Table(name = &quot;StatusCorretor&quot;, schema = &quot;ev&quot;)
@NamedQueries({ 
.
.
.
})
public class StatusCorretor implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@Column(name = &quot;idStatus&quot; , nullable = false)
	private Integer idStatus = 0;

	@Column(name = &quot;nomeStatus&quot;)
	private String nomeStatus;
	
	@OneToMany(mappedBy =&quot;statusCorretor&quot;)
	private List&lt;CorretorPessoa&gt; corretorPes;
	

	public List&lt;CorretorPessoa&gt; getCorretorPes() {
		return corretorPes;
	}

	public void setCorretorPes(List&lt;CorretorPessoa&gt; corretorPes) {
		this.corretorPes = corretorPes;
	}

	public Integer getIdStatus() {
		return idStatus;
	}

	public void setIdStatus(Integer idStatus) {
		this.idStatus = idStatus;
	}

	public String getNomeStatus() {
		return nomeStatus;
	}

	public void setNomeStatus(String nomeStatus) {
		this.nomeStatus = nomeStatus;
	}


	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((idStatus == null) ? 0 : idStatus.hashCode());
		return result;
	}

	@Override
    public boolean equals(Object obj) {
            return obj instanceof StatusCorretor && ((StatusCorretor)obj).getIdStatus().equals(this.idStatus);
    }
}

Action
Aqui eu não sei como passar o status da pessoa:

public void alterarStatus(CorretorPessoa c){
		this.corretorPessoa = c;
		if(corretorPessoa.getStatus().equals("Pendente") || corretorPessoa.getStatus().equals("Inativo")){
			this.corretorPessoa.setStatusCorretor(); //AQUI - passar para Ativo
		} else if(corretorPessoa.getStatus().equals("Ativo")){
			this.corretorPessoa.setStatusCorretor(); //AQUI - passar para Inativo
		}
		try {
			this.corretorManager.atualizaStatus(this.corretorPessoa);
			this.statusMessages.add("Status do corretor  foi alterado com sucesso!");
		}catch(Exception e){
			e.printStackTrace();
		}
	}

Como passo o objeto StatusCorretor nesse caso?

Alguém sabe uma forma “elegante” de fazer o que eu disse acima?

use o <f:setPropertyActionListener /> para cada parametro de status, relacionado a imagem que voce for utilizar, terar essa tag com o valor que ela deve setar no status. Pode dar uma pesquisada que voce acha aqui menos no guj exemplos de como usar essa tag. Como voce esta utilizando o richfaces tem tb o a4j:param que funciona de forma parecida.

thimor,
Ficaria ± assim no meu jsf?

&lt;div id="resultado" class="name_wrap2"&gt;
				&lt;rich:panel&gt;
					&lt;h:dataTable  noResultMessage="Nenhum registro encontrado." name="listaCorretores" value="#{corretorAction.listaCorretores()}" var="corretorDados" rows="20" &gt;
						&lt;h:column label="Creci" value="#{corretorDados.corretorCreci}"/&gt;
						&lt;h:column style="width:600px;" label="Nome" value="#{corretorDados.pessoa.nomePessoa}" clientOrder="true" /&gt;
						&lt;h:column style="width:100px;" label="Classificação" value="#{corretorDados.classificacao.nomeClassificacao}" /&gt;
						&lt;h:column style="width:100px;" label="Título" value="#{corretorDados.titulo.nomeTitulo}"/&gt;
						&lt;h:column style="width: 100px" label="Situação" value="#{corretorDados.situacao.nomeSituacao}"&gt;&lt;/tailor:column&gt;
						&lt;rich:column  style="width:50px;" filterValue="#{corretorPessoa.statusCorretor}"&gt;
							&lt;f:facet name="header"&gt;
								&lt;h:outputText value="Status" /&gt;
							&lt;/f:facet&gt;
							&lt;s:div style="float:center; text-align:center;"&gt;
								&lt;h:commandLink title="#{corretorPessoa.statusCorretor.nomeStatus}"  actionListener="#{corretorAction.alterarStatus(corretorDados)}" onclick="return confirm('Deseja realmente alterar o status desse corretor?');" &gt;
									&lt;a4j:support event="onchange" limitToList="true" ajaxSingle="true" bypassUpdates="false" reRender="resultado" /&gt;
									<img  >
										&lt;f:setPropertyActionListener target="#{corretorDados.statusCorretor}" value="#{statusSelecionado}"/&gt;   
									</img>
									
								&lt;/h:commandLink&gt;
							&lt;/s:div&gt;
						&lt;/rich:column&gt;	
						&lt;rich:column style="width:50px;"&gt;
							&lt;f:facet name="header"&gt;
								&lt;h:outputText value="Editar" /&gt;
							&lt;/f:facet&gt;
							&lt;s:div style="float:center; text-align:center;"&gt;
								&lt;h:commandLink action="#{corretorAction.editarCorretor(corretorDados)}" title="Editar"&gt;
									<img  />
								&lt;/h:commandLink&gt;
							&lt;/s:div&gt;
						&lt;/rich:column&gt;
					&lt;/h:dataTable&gt;					
				&lt;/rich:panel&gt;
				&lt;/div&gt;

Na minha action que eu não entendo como passar o valor.
Coloquei dessa forma:


	@In(required=false)
	@Out(required=false)
	private StatusCorretor statusSelecionado;


    public void alterarStatus(CorretorPessoa c){  
            this.corretorPessoa = c;  
            if(corretorPessoa.getStatus().equals("Pendente") || corretorPessoa.getStatus().equals("Inativo")){  
                this.corretorPessoa.setStatusCorretor(statusSelecionado); //AQUI  
            } else if(corretorPessoa.getStatus().equals("Ativo")){  
                this.corretorPessoa.setStatusCorretor(statusSelecionado); //AQUI  
            }  
            try {  
                this.corretorManager.atualizaStatus(this.corretorPessoa);  
                this.statusMessages.add("Status do corretor  foi alterado com sucesso!");  
            }catch(Exception e){  
                e.printStackTrace();  
            }  
        }