Ao usar o Spring Web Flow 1, como faço para adicionar um objeto a uma lista em um bean?
-
05-07-2019 - |
Pergunta
Eu tenho um um fluxo web onde eu preciso de dados de captura em uma das telas.
Esses dados são armazenados em um objeto que será realizada em uma lista no bean.
Ao submeter a página que eu quero ser capaz de criar um objeto, e adicioná-lo à lista no bean.
Isso é possível?
Graças
Solução 2
No final, eu consegui fazê-lo funcionar com os seguintes fluxos.
Eu criei um feijão ajudante para realizar uma função para adicionar à lista realizada no feijão formulário.
<view-state id="page2" view="page2">
<transition on="save" to="addToList">
<action bean="form" method="bindAndValidate"/>
</transition>
<transition on="back" to="page1">
<action bean="formAction" method="bindAndValidate"/>
</transition>
<transition on="next" to="page3">
<action bean="formAction" method="bindAndValidate"/>
</transition>
</view-state>
<action-state id="addToList">
<bean-action bean="helperbean" method="addToList">
<method-arguments>
<argument expression="conversationScope.form"/>
</method-arguments>
</bean-action>
<transition on="success" to="page2"/>
</action-state>
Em seguida, exibe a página original novamente
Outras dicas
Você precisa fazer um par de coisas:
-
Coloque um objeto no escopo de fluxo (ou adicionar um campo extra em um objeto existente como seu Formulário) para dar um caminho de ligação fixo para o objeto que você deseja editar. Se você não fizer isso, você não pode tirar proveito da ligação de dados do Spring.
-
Escrever um método em seu FormAction colocar esse objeto em sua lista, e definir este método para executar na transição seguidas quando você enviar a página atual. Este método pode limpar os recursos de nível flowscope utilizados em (1), conforme necessário.
Editar A documentação Webflow tem bons exemplos de como executar ações em transições. Para Webflow versão 2 check-out Execução de vista transições e execução de ações . Para a versão 1, consulte Fluxo definição .
Gostaria de armazenar o feijão (ea lista) na sessão.