@ManagedProperty jsf 2

Olá amigos,

Estou concluíndo um cadastro com jsf 2 e primefaces 3, para realizar esse cadastro estou utilizando @ViewScoped no meu manager bean. Eu consigo incluir, deletar e consultar os meus dados, sendo que na hora de alterar os registros, eu vou para outra página, ai não consigo setar o meu objeto a ser alterado pelo componente <f:setPropertyActionListener, ele até seta o objeto, mas quando navega para outra tela, ele tira da sessão todo o meu manager bean, estou pensando em utilizar a anotação @ManagedProperty.

Alguém tem uma solução melhor ou essa é a melhor maneira de fazer esse tipo de trabalho com jsf 2.

Abraços amigos.

Zenas,

Isso acontece porque quando vc utiliza o @ViewScoped ele mantem a sessão somente na tela que vc está usando. Quando você faz a requisição para outra tela, a sessão é fechada…
Para que você consiga usar dessa forma, altere o @ViewScoped para @SessionScoped.

Att

Olá amigo,

Mas se eu utilizar @SessionScoped eu vou colocar todo o meu managerbean na sessão do servidor o que é muito ruim para a aplicação. Vai funcionar momentaneamente, mas pra frente traz problemas maiores

Mas vlw pela dica.

Abraços

Olá Amigos,

Consegui resolver o meu problema da seguinte forma descrita abaixo e com a ajuda do link: http://stackoverflow.com/questions/4386455/jsf-2-what-scope-should-i-use

[code]// Método alterar do meu managerbear
@ViewScoped
@ManagedBean()
public class FuncionarioBean extends Controller implements Serializable {

@PostConstruct
public void init() {
	if ( ELFlash.getFlash().get("objeto") != null ){
		if ( ELFlash.getFlash().get("objeto") instanceof Trabalhador ){
			setT( (Trabalhador) ELFlash.getFlash().get("objeto") );
			ELFlash.getFlash().clear();
			
		}
		
	}
}


public String alterar() throws Exception{
	ELFlash.getFlash().put("objeto", getT());
	return super.goToAlterar( "/jsp/funcionario/inserir?faces-redirect=true&amp;includeViewParams=true" );
	
}

[/code]

No xhtml

[code]
<p:column>
<f:facet name=“header”>
<h:outputText value=“Alterar” />
</f:facet>

<p:commandButton action="#{funcionarioBean.alterar}“
image=“ui-icon ui-icon-pencil"
ajax=“false”>
<f:setPropertyActionListener target=”#{funcionarioBean.t}“
value=”#{obj}” />
</p:commandButton>

</p:column>

		<p:column>
			<f:facet name="header">  
                <h:outputText value="Deletar" />  
            </f:facet>
            <center>
	            <p:commandButton 	onclick="confirmation.show()" 
	            					image="ui-icon ui-icon-trash">
	            	<f:setPropertyActionListener 	target="#{funcionarioBean.t}" 
													value="#{obj}" />
	            </p:commandButton>
	        </center>
		</p:column>
	
	</p:dataTable>

	<p:confirmDialog 	message="Você tem certeza que deseja excluir este Funcionário?"  
       					header="Confirmação" 
       					severity="alert" 
       					widgetVar="confirmation">
       	
    	<p:commandButton 	value="Excluir" 
    						update="funcionarioAsList" 
    						oncomplete="confirmation.hide()"  
                			actionListener="#{funcionarioBean.remover}" 
                			ajax="false"
                			id="btnExcluir">
        </p:commandButton>  
    	
    	<p:commandButton 	value="Cancelar" 
    						onclick="confirmation.hide()" 
    						type="button" />  
 	</p:confirmDialog>		

</h:body>
[/code]

Abraços a todos