С JSF, управляемыми компонентами и EL 2.2 я обычно знаю, что выражение формы:
#{bean.value}
будет отображаться на соответствующий набор функций в классе управляемого компонента следующим образом:
@ManagedBean
class Bean {
private String value;
public String getValue() { return value; }
public void setValue( String s ) { value = s; }
}
Это также можно получить и установить свойства карты:
#{bean.value['key']}
Поддерживается чем-то вроде:
@ManagedBean
class Bean {
private Map<String, Boolean> kvMap;
public boolean getValue( String key ) { return kvMap.get( key ); }
public void setValue( String key, boolean value ) { kvMap.put( key, value ); }
}
Пока все хорошо.
По мере того, как я провожу больше времени с JSF, я обнаружил, что пытаюсь писать повторно используемые фрагменты кода. В частности, небольшие блоки xhtml в блоках
, которые я могу включить через
. Более того, многие из наиболее полезных для меня вещей — это такие вещи, как вложенные наборы флажков (наш UI-дизайнер просто без ума от них ;-), и здесь
становится очень удобно.
Всегда, чтобы использовать
и
без безбожного набора текста, я использовал псевдонимы, либо созданные с помощью
или встроенный с чем-то вроде var
атрибута
.
Поскольку я пишу все больше и больше вложенных UIComponents, особенно тех, которые получают свои значения из карт внутри карт, мне становится все труднее и труднее вывести правильную сигнатуру метода установки, которую JSF будет искать при отправке формы. (по какой-то причине писать геттеры кажется более естественным).
Тогда мой вопрос к вам, гуру:
Есть ли какой-нибудь способ заставить JSF сказать мне, как, по его мнению, должна выглядеть сигнатура установщика? Поскольку JSF обычно не жалуется на выражение, которое разрешается только в геттер (думая, что это свойство только для чтения), я нахожу отсутствие обратной связи разочаровывающим, и, похоже, требуется много возиться с различными сигнатурами методов, прежде чем я наконец попал в эту магическую правильную.
Я надеюсь, что есть какой-то метод, скажем, запрос FacesContext... во время выполнения или поиск в каком-то скомпилированном промежуточном продукте, таком как файл класса, который укажет мне правильную сигнатуру установщика для глубоко вложенного свойства. Я думаю, что если бы такая вещь существовала, это сэкономило бы мне много времени, пытаясь понять, как создать сеттер методом проб и ошибок.
Надеюсь, я достаточно ясно сформулировал, что мне нужно, заранее спасибо за ваши ответы.