Spring MVC: Ligação 3 dropdowns para uma propriedade de data em SimpleFormController

StackOverflow https://stackoverflow.com/questions/161485

  •  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?

Foi útil?

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top