Кажется достаточно простым ...
У меня есть пользовательский компонент JSF и связанный с ним рендерер. Рендерер делает decode
и encodeEnd
.
В decode
я успешно получил отправленное значение через component.setSubmittedValue(ctx.getExternalContext().getRequestParameterMap().get(c.getClientId()));
В encodeEnd
я в основном создаю разметку, и если component.getValue()
не равен нулю, я вставляю ее содержимое в разметку. Пока все хорошо.
Проблема в том, что getValue()
может быть только String
. У меня есть пользовательский класс, который представляет составной тип данных, и я хочу использовать его в качестве локального значения компонента. Но не работает - JSF конвертирует в String
.
Я также попытался использовать component.getAttributes()
- из метода decode
, где я поместил свой пользовательский объект с ключом private static final String someKey = "asd"
. Но позже на encodeEnd
на карте нет значения / ключа.
Я хочу, чтобы пользователи этого компонента могли указывать в своем компоненте пользовательский тип данных и не беспокоиться о сериализации / десериализации в текстовое представление между клиентом / сервером. Предположительно я должен использовать конвертер для этого? Но как мне настроить конвертер по умолчанию и неизменяемый для пользовательского компонента?