Wicket tiene un flexible internationalisation system que admite la parametrización de mensajes de IU de muchas maneras. Hay ejemplos, p. en StringResourceModel javadocs, como este:¿Manera simple de usar mensajes de IU parametrizados en Wicket?
WeatherStation ws = new WeatherStation();
add(new Label("weatherMessage", new StringResourceModel(
"weather.${currentStatus}", this, new Model<String>(ws)));
Pero quiero algo realmente sencillo , y no podía encontrar un buen ejemplo de ello.
Considere este tipo de mensaje de interfaz de usuario en un archivo .properties:
msg=Value is {0}
En concreto, no me gustaría crear un objeto del modelo (con captadores para los valores que ser reemplazado, al igual que en el anterior WeatherStation ejemplo) solo para este propósito. Eso es demasiado exagerado si ya tengo los valores en las variables locales, y de lo contrario no hay necesidad de tal objeto.
Aquí está una manera estúpida "fuerza bruta" para reemplazar el {0} con el valor correcto:
String value = ... // contains the dynamic value to use
add(new Label("message", getString("msg").replaceAll("\\{0\\}", value)));
¿Hay una forma más limpia, Wicket-y para hacer esto (que no es terriblemente mucho más tiempo que el anterior) ?
Sí, de hecho, esta es básicamente una versión mejorada de 'String.format()' [que sugerí] (http://stackoverflow.com/a/10249630/56285), con la diferencia clave de que 'MessageFormat' verdaderamente admite muchos idiomas ya que el orden de los parámetros reemplazados está explícitamente especificado. – Jonik
@Jonik sí tienen razón:) –