Мне удалось сделать это для моего собственного приложения, хотя и с довольно некрасивым взломом.Я сделал это, выставив настроенную версию WicketMessageResolver.
Вот что попробовать:
Оптовая копия и вставка org.apache.wicket.markup.resolver.WicketMessageResolver
в ваш собственный класс (скажем, com.acme.CustomWicketMessageResolver) (хакначинается!)
Внутри вашего CustomWicketMessageResolver измените WicketTagIdentifier.registerWellKnownTagName( "message" );
на что-то еще, например WicketTagIdentifier.registerWellKnownTagName( "msg" );
.
Внутри private void renderMessage(final MarkupStream markupStream, final ComponentTag openTag, final String key, final String value)
вы найдете строку getResponse().write( text );
.
Непосредственно перед этой строкой у вас есть возможность обойти значение "text".Там я делаю что-то вроде text = MyLabelUtils.replaceWikiMarkup(text)
, которое выполняет постобработку некоторого вики-подобного синтаксиса разметки, используемого авторами контента для моего приложения.
Например, я использую этот метод для получения метки с помощью ResourceModel, указывающего наключ:
propertyKey=I found the answer on [acronym SO].
и отображаем его как
I found the answer on <acronym title="Stack Overflow">SO</acronym>
.
, и этот метод обрабатывает i18n и все эти забавные вещи
Конечно, вы можете расширить этот синтаксис вики (или что-то подобное), чтобы он был настолько простым или сложным, насколько вам нужно.
Обратите внимание, что вам придется изменить <wicket:message key='foo'>
<wicket:msg key='foo>
во всех ваших файлах разметки (или, по крайней мере, в тех, где вы хотите такое поведение).
Я бы, очевидно, предпочел более стандартный способ настройки поведения встроенного распознавателя сообщений в калитке,но если вам нужна эта функциональность в крайнем случае, как я сделал, это будет работать на данный момент.
Если вам нужно что-то более стандартное, вы можете поднять проблему в списке рассылки Wicket.Это очень хорошо.