У меня есть одна страница, на которой отображаются сведения о каком-то клиенте. Я использую t:loop
для отображения некоторых данных. В t:loop
я просто передаю source
и value
. Пока все хорошо, моя страница работает нормально. Но когда я пытаюсь отправить страницу, она внезапно дает мне исключение.
«Не удалось найти приведение типа java.lang.String к типу [addressUsageValue] Доступные приведения:……….»
Ниже приведен пример кода.
${addressUsageValue?.usage}
${addressUsageValue?.address}
${addressUsageValue?.postCode}
${addressUsageValue?.city}
${addressUsageValue?.country}
Я немного погуглил и нашел ниже ссылки.
http://tapestry.apache.org/5.3.3/apidocs/org/apache/tapestry5/corelib/components/Loop.html https://issues.apache.org/jira/browse/TAP5-609
Итак, я создал кодировщик для Loop. Ниже приведен пример кода. В приведенном ниже методе toClient()
я случайным образом возвращаю любое значение, а в методе toValue()
я возвращаю ноль.
private final ValueEncoder addressUssageEncoder =
new ValueEncoder() {
public String toClient(DtoAddressUsageInfo value) {
return String.valueOf(value.getUsage());
}
public DtoAddressUsageInfo toValue(String clientValue) {
return null;
}
};
Теперь мой код работает нормально, и я могу отправить форму.
Здесь у меня возникают сомнения
Во-первых, я не могу понять, зачем нужен энкодер при использовании цикла?? А если требуется отправить форму, то почему это не обязательный параметр??
Во-вторых, я только что реализовал кодировщик без какой-либо логики. Я не могу понять, где используется метод toValue() и toClient() и какова цель?
В-третьих, когда я отправляю страницу, почему форма требует кодирования??