Ola, eu lembro que ja passei por isso, mas faz tempo, acabei resolvendo usando ViewScoped. Eu tenho uma pagina que lista produtos. Ao clicar no bota, redireciono para a pagina de alteracao de preco. Se eu definir o bean como requestscoped nao ao clicar no botao, ele nao chama o metodo selecionar(). Com o viewscoped como muda a pagina eu implementei dessa forma, gostaria de saber se é a forma correta. E se alguem souber porque o escopo de resquest nao executa a action.
`
@ManagedBean
@ViewScoped
public class ProdutoController {
private ProdutoService service = new ProdutoService();
private Produto produto;
private ProdutoLoja produtoLoja;
private List<Produto> produtos;
public ProdutoController() {
}
@PostConstruct
public void init() {
String idProduto = (String) FacesUtil.recuperarDoRequest("idProduto");
if (idProduto != null) {
produto = service.pesquisarPorID(new Integer(idProduto));
produtoLoja = service.pesquisarProdutoLoja(produto);
}
produtos = new ArrayList<>();
}
public String selecionar() {
FacesUtil.salvarNoRequest("idProduto", produto);
return "alteraPreco.faces";
}
}
`
A codigo da pagina do trecho onde o produto eh selecionado
`
Eu pesquiso os produtos, seleciono no que eu quero alterar o preco. ele direciona para a pagina, eu altero o preco, salvo e retorno para a pagina de listagem. Isso tudo esta funcionando com o ViewScoped. Se eu colocar em Resquet, ao clicar no botao selecionar nao funciona.
Quero saber se essa implementacao do bean para ir de uma pagina para outra é a mais adequada.
E do lado da Controller se coloca @ManagedProperty("#{param.produto}"). Verifica estes valores via sysout no PostConstruct.
Lendo a documentação do setPropertyActionListener não vi nenhuma abordagem sobre restrição aos scope.
Ou voçê pode tentar
Eu uso p:dialog mesmo com ajax. E esta funcionando direito. So que eu coloquei o projeto num servidor pago. E ele ta passando da quantidade de jvm que tenho. Dai quero colocar os mb como request para ver como fica o consumo de memoria. So que quando boto em request… A selecao dos objetos das listas dao esse problema de redirecionamento. Ele nao chama o metodo.
Eu dei mais umas pesquisadas e achei um topico daqui mesmo, do Hebert, falando que bibliotecas visuais como primefaces e richfaces nao funcionam no escopo de request. E comprovei tirando os componentes do primefaces da pagina e funcionou normalmente.
O problema eh pq o data table do primefaces so funciona em view scoped. Testei tirando os compronentes do primefaces e funcionou em request sem problemas.
Estuda qualquer outra coisa que nao seja baseado em componente do lado servidor. Spring Boot com Spring MVC é uma boa escolha para Java. Antes disso, caso não tenha se aprofundado, é necessário aprender HTTP/REST e consequentemente front-end HTML/CSS/JS.