Spring MVC: Ligação 3 dropdowns para uma propriedade de data em SimpleFormController
-
03-07-2019 - |
Pergunta
Como devo configurar a classe para ligar três dropdowns (dia, mês, ano) para uma única propriedade Data para que ele funciona da maneira que funciona para o cenário 'parâmetro de solicitação único por propriedade'? Eu acho que um deve adicionar algumas PropertyEditors personalizados, substituindo initBinder método. O que mais?
Solução
Aleksey Kudryavtsev: você pode substituir o método onBind em seu controlador, i que você não pode mexer algo especial em objeto de comando, como
dateField = new SimpleFormat("YYYY-mm-dd").parse(this.year + "-" + this.month + "-" this.day);
ou
Calendar c = Calendar.getInstance();
c.set(year, month, day);
dateField = calendar.getTime();
Mas eu prefiro fazer a validação em javascript e usar algum componente de selecionador de data disponível, há uma abundância deles ...
Outras dicas
Você pode criar uma entrada escondida em seu formulário e preenchê-lo usando JavaScript quando a data usuário seleciona, em seguida, vincular a esta entrada em seu objeto de comando.
Provavelmente você estará usando javascript qualquer maneira para coisas como checar a correção da data, então porque não formatar o pronto para data de uso em um parâmetro.
Em seguida, você precisa registrar um editor de propriedade que iria converter de string "2008-05-20" to Date objeto.
então eu teria três campos no meu objeto de comando - ano, mês, dia e usaria validação primavera padrão para verificação de data ??p>
Eu não tentei, mas você pode tentar ligação a MutableDateTime na biblioteca Joda . Tem setters e getters separadas para todos os três campos.