В настоящее время я глубоко погружаюсь в JSF, и у меня есть вопрос. Я использую JSF 2.2 (Mojarra 2.2.9) в небольшом приложении. Я создал пользовательский компонент для отображения структуры данных в виде меню. Код выглядит как что-то вроде этого:onClick Event on Element in customComponent
@FacesComponent(createTag = true, tagName = "UIRecursiveTree", namespace = "")
public class UIRecursiveTree extends UIComponentBase {
@Override
public String getFamily() {
return "";
}
@Override
public void encodeBegin(FacesContext context) throws IOException {
}
private void writeFolderStructure(Map<IContainer, ?> map, ResponseWriter writer, String prefix) {
}
}
Я раздел код, и я, конечно, установил семью и пространство имен, просто спрятал. Элемент управления имеет атрибут value, который получает LinkedHashMap, который отображается в моем приложении. Все работает нормально. В настоящее время я просто печатаю несколько ярлыков с помощью ResponseWriter, которые представляют мою структуру. Проблема в том, что структура может быть довольно большой, а механик для загрузки структуры не идеален, по крайней мере, если я загружаю все сразу, что занимает много времени. Итак, моя идея состоит в том, что я хочу привязать свои элементы (в настоящее время только метки, но будет заменен ссылками или что-то в этом роде) на событие onClick, которое заставляет компонент снова загружать новые значения (Ajax) (выборка дочерние элементы текущего элемента и добавьте их в мою структуру, чтобы значения загружались только тогда, когда они были необходимы)
Я знаю, что в некоторых библиотеках есть некоторые элементы управления, которые я мог бы использовать для сопоставления такой структуры, но я Я изучаю JSF и использую уже сделанные вещи, ничего не учит. =)
Итак, вопрос в том, как связать событие onClick с моими элементами, чтобы заставить компонент обновиться?
Заранее спасибо.
В этом отношении я многому научился, посмотрев на источник «других компонентов». Дерево PrimeFaces - хороший пример, который, я думаю, может вас многому научить. Возможно, у BalusC есть ссылка на какой-то учебник, но ответ на этот вопрос здесь займет много времени (моего) времени, так как это не просто некоторые oneliner ... – Kukeltje
Спасибо за ответ, я рассмотрю его. Конечно, я не хочу, чтобы вы писали мой код, мне просто нужны некоторые подсказки о том, как это можно сделать. Я использовал аналогичную технологию в прошлом, и там было возможно добавить событие, в котором я мог бы вызвать метод в моем бэкэнд, и мог бы дать ему идентификатор, который будет обновлен. Есть ли аналогичный подход в JSF? –
Что касается основной проблемы, которую вы пытались решить, OmniFaces имеет компонент без разметки, который дает вам полную свободу вносить разметку и события. Конечно, это тоже с открытым исходным кодом http://showcase.omnifaces.org/components/tree.Что касается конкретного вопроса, то он слишком широк и длинный, но я считаю, что вы конкретно ищете «ClientBehaviorHolder». – BalusC