Pregunta

mailconfirm.mail.body=<html><body><h3 style="margin: 0 0 1em;">Hi, {0}!</h3>\
    To confirm your email address click on the confirmation link given bellow. If clicking on the link doesn't work, copy and paste the link in a new browser tab. <br /><br />\
    <a href="http://www.domain.com/confirm_email.html?action=activate&hash={1}">http://www.domain.com/confirm_email.html?action=activate&hash={1}</a><br /><br />\
    Kind regards,<br />\
    Your Something
    </body></html>

Este de arriba es el mensaje concreto utilizado para el código de abajo.

String country = "AU";
Object[] args = new Object[] { account.getLogin(), confirm.getHash() };

helper.setText(appContext.getMessage("mailconfirm.mail.body", args,
                new Locale(country)), true);

Yo depurar ambos argumentos y ambos tienen los valores de la derecha.Cuando depuración appContext.getMessage línea, he visto que el {1} param no se llena con el valor correcto, sin embargo {0} es.

Alguna idea de lo que podría estar equivocado?Sospecho que podría ser algún problema de la configuración regional.

¿Fue útil?

Solución

Problema resuelto!Parece que el problema era debido a que el mensaje de mailconfirm.correo.el cuerpo contiene un apóstrofo en algún lugar después de {0} y entre {1}.Después reemplazado doesn't con does not se solucionó el problema.Yo no sabía apóstrofes no puede ser utilizado en la.P. S.Es un bug o simplemente mi error y apóstrofes debe ser escapado?

mailconfirm.mail.body=<html><body><h3 style="margin: 0 0 1em;">Hi, {0}!</h3>\
    To confirm your email address, click on the confirmation link given bellow. If clicking on the link doesn't work, copy and paste the link in a new browser tab. <br /><br />\
    <a href="http://www.domain.com/confirm_email.html?action=activate&hash={1}">http://www.domain.com/confirm_email.html?action=activate&hash={1}</a><br /><br />\
    Kind regards,<br />\
    Your Something
    </body></html>

Uno doesn't me tomó alrededor de una hora a la figura hacia fuera y el empuje de una solución.Jajaja..A partir de ahora considero apóstrofes está mal!

Otros consejos

El ResourceBundleMessageSource de Spring (que creo que estás usando) usa MessageFormat para reemplazar marcadores de posición ({0}) dentro de los mensajes.MessageFormat requiere que las comillas simples (') se escapen usando dos comillas simples ('') (ver: MessageFormat Javadoc ).

Sin embargo, de forma predeterminada, los mensajes que no contienen argumentos no serán analizados por MessageFormat.Por lo tanto, no es necesario omitir las comillas simples en mensajes sin argumentos.

ResourceBundleMessageSource proporciona una bandera llamada alwaysUseMessageFormat que se puede usar si se debe aplicar MessageFormat a todos los mensajes.Por lo tanto, una comilla simple siempre debe ir acompañada de dos comillas simples.

Consulte esta publicación de blog para obtener más detalles.

No puedo convencer a mi equipo de negocios para que agregue dobles apos en los lugares requeridos y algunas veces también se olvidan. Así que anulé ReloadableResourceBundleMessageSource#loadProperties como: si el valor contiene "'" & "{0", reemplace "'" por "''" y colóquelo en Propiedades con la misma clave.

Una alternativa es usar String.format, cambiar {X} por %s.

mailconfirm.mail.body=<html><body><h3 style="margin: 0 0 1em;">Hi, %s!</h3>\
    To confirm your email address click on the confirmation link given bellow. If clicking on the link doesn't work, copy and paste the link in a new browser tab. <br /><br />\
    <a href="http://www.domain/confirm_email.html?action=activate&hash=%s">http://www.domain/confirm_email.html?action=activate&hash=%s</a><br /><br />\
    Kind regards,<br />\
    Your Something
    </body></html>


String whatEver = messageSource.getMessage("mailconfirm.mail.body", null, locale);

whatEver = String.format(whatEver,account.getLogin(), confirm.getHash() );

Espero que sea útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top