我想要在Spring MVC中使用自定義格式化程序。我已看過幾篇關於此的帖子,包括:Custom Annotation-driven Formatting Spring MVC。我瀏覽了我的應用程序,我知道格式化程序正在註冊。由於我確信格式化程序已註冊,我認爲它的註釋被忽略,但我不知道爲什麼。Spring MVC自定義格式化程序不是正在燒製
僅供參考這裏是我如何註冊格式工廠:
@Override
public void addFormatters(FormatterRegistry registry)
{
registry.addFormatterForFieldAnnotation(new PhoneNumberFormatAnnotationFormatterFactory());
}
譯註:
@Target(value = { ElementType.FIELD })
@Retention(value = RetentionPolicy.RUNTIME)
public @interface PhoneNumber
{
}
格式化廠:
public class PhoneNumberFormatAnnotationFormatterFactory implements AnnotationFormatterFactory<PhoneNumber>
{
@Override
public Set<Class<?>> getFieldTypes()
{
Set<Class<?>> setTypes = new HashSet<Class<?>>();
// setTypes.add(String.class);
setTypes.add(PhoneNumber.class);
return setTypes;
}
@Override
public Printer<?> getPrinter(PhoneNumber annotation, Class<?> fieldType)
{
return new PhoneNumberFormatter();
}
@Override
public Parser<?> getParser(PhoneNumber annotation, Class<?> fieldType)
{
return new PhoneNumberFormatter();
}
}
格式化:
public class PhoneNumberFormatter implements Formatter<String>
{
private static final Logger logger = Logger.getLogger(PhoneNumberFormatter.class);
@Override
public String print(String subject, Locale locale)
{
logger.debug("formatting phone number");
return subject + "BOO";
}
@Override
public String parse(String text, Locale locale) throws ParseException
{
return text;
}
}
使用' '標籤是解決方案。感謝Adam。 –
RhythmicDevil
@ adam-erstelle你確定它是安全的嗎? 'spring:eval'評估Spring表達式(SpEL),這裏我們使用用戶的值。對我來說,看起來我們允許用戶執行任何SpEL表達式,這是安全漏洞。此外,禁用'htmlEscaping'看起來很奇怪,因爲可能會導致XSS。 –
P.S.如果這個值是表單中的輸入,那麼你可以使用'',它應該可以工作。 –