Tengo una página que muestra detalles de algunos clientes. Estoy usando t:loop
para mostrar algunos datos. En t:loop
Estoy pasando source
y value
. Hasta ahora todo va bien, mi página está funcionando bien. Pero cuando trato de enviar la Página, de repente me da la Excepción.Encóder con <t:loop> componente en Tapiz
“No se pudo encontrar una coerción de tipo java.lang.String para escribir [addressUsageValue] coacciones disponibles:. .........”
A continuación se muestra el código de ejemplo
<t:loop source="addressUsageInfo" value="addressUsageValue">
<tr>
<td>${addressUsageValue?.usage}</td>
<td>${addressUsageValue?.address}</td>
<td>${addressUsageValue?.postCode}</td>
<td>${addressUsageValue?.city}</td>
<td>${addressUsageValue?.country}</td>
</tr>
</t:loop>
Hice algunas gafas y encuentro debajo de las referencias.
http://tapestry.apache.org/5.3.3/apidocs/org/apache/tapestry5/corelib/components/Loop.html https://issues.apache.org/jira/browse/TAP5-609
Así que han creado codificador de bucle. A continuación se muestra el código de muestra. En el siguiente método, toClient()
, he devuelto aleatoriamente cualquier valor y en el método toValue()
devuelvo el valor nulo.
private final ValueEncoder<DtoAddressUsageInfo> addressUssageEncoder =
new ValueEncoder<DtoAddressUsageInfo>() {
public String toClient(DtoAddressUsageInfo value) {
return String.valueOf(value.getUsage());
}
public DtoAddressUsageInfo toValue(String clientValue) {
return null;
}
};
Ahora mi código está funcionando bien y puedo enviar el formulario.
Aquí viene mi duda
Primera - No soy capaz de entender por qué se requiere cuando se utiliza el codificador de bucle ?? Y si se requiere enviar el formulario, ¿por qué no es un parámetro obligatorio?
Segundo: Acabo de implementar el Encoder sin ninguna lógica. No puedo entender dónde se usa el método toValue() y toClient() y cuál es el propósito?
En tercer lugar, cuando presento la página ¿por qué el formulario requiere Encoder?
muchas gracias @Henning. Entiendo :) –