Я читал некоторые темы по этому поводу, но ни одна из них не помогла мне.
Моя проблема в том, что преобразование работает хорошо, но сегодня я получил жалобу пользователя с использованием ios 12 и Safari.Сразу же я проверил на Iphone с IOS 12, и я не мог воспроизвести ошибку.Это может быть какая-то конкретная конфигурация устройства или региональные настройки?
Пожалуйста, помогите!Спасибо.
Контроллер
@Controller
public class SaleController {
@InitBinder
public void setPropertyBinder(WebDataBinder dataBinder) {
//The date format to parse or output your dates
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
//Create a new CustomDateEditor
CustomDateEditor editor = new CustomDateEditor(dateFormat, true);
//Register it as custom editor for the Date type
dataBinder.registerCustomEditor(Date.class, editor);
}
@RequestMapping(value="/venda3", method=RequestMethod.POST)
public String venda3(@Valid @ModelAttribute("anuncioImovel") AnuncioImovel anuncioImovel, BindingResult resultImovel, Model model, Principal principal, HttpServletRequest request) {
}
}
Модель
@Entity
public class AnuncioImovel {
@Column(nullable=true)
@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern="yyyy-MM-dd")
@Past
private Date inicioLocacao;
@Column(nullable=true)
@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern="yyyy-MM-dd")
@Future
private Date terminoLocacao;
public void setInicioLocacao(Date inicioLocacao) {
this.inicioLocacao = inicioLocacao;
}
public void setTerminoLocacao(Date terminoLocacao) {
this.terminoLocacao = terminoLocacao;
}
}
Шаблон Thymeleaf
<!-- Início Locação -->
<div class="form-group">
<label for="frmInicioLocacao" class="form-control-label text-primary"><strong>Início Locação</strong></label>
<input type="date" class="form-control" id="frmInicioLocacao" name="inicioLocacao"
th:value="${anuncioImovel.inicioLocacao} ? ${#dates.format(anuncioImovel.inicioLocacao, 'yyyy-MM-dd')}"
th:classappend="${#fields.hasErrors('anuncioImovel.inicioLocacao')} ? 'is-invalid' : ''"
oninput="javascript: this.value = this.value.slice(0, 10);"/>
<div class="invalid-feedback">
<span th:errors="*{anuncioImovel.inicioLocacao}"></span>
</div>
</div>
<!-- Término Locação -->
<div class="form-group">
<label for="frmTerminoLocacao" class="form-control-label text-primary"><strong>Término Locação</strong></label>
<input type="date" class="form-control" id="frmTerminoLocacao" name="terminoLocacao"
th:value="${anuncioImovel.terminoLocacao} ? ${#dates.format(anuncioImovel.terminoLocacao, 'yyyy-MM-dd')}"
th:classappend="${#fields.hasErrors('anuncioImovel.terminoLocacao')} ? 'is-invalid' : ''"
oninput="javascript: this.value = this.value.slice(0, 10);"/>
<div class="invalid-feedback">
<span th:errors="*{anuncioImovel.terminoLocacao}"></span>
</div>
</div>
Ошибка печати, отправленная пользователем нажмите здесь
Мой тест В моем тесте на Iphone показаны датытаким образом, и преобразование работает (я не знаю, как дата отображается на устройстве пользователя): Нажмите здесь