Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSF + Tree, Как прослушать? 
:(
    Опции темы
Gugle
Дата 13.10.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 9.12.2005

Репутация: нет
Всего: нет



Доброго времени суток!

Использую jsf в netbeans 6.1. Кидаю на форму tree, говорю что строиться будет динамически. Соответственно:
PageFace.jsp:
Код

<webuijsf:tree binding="#{PageFace.treeD}" id="tree" text="Test"/>

И в PageFace.java:
Код

private Tree treeD= new Tree();
public Tree getTreeD() {
    for (int i=0; i<5; i++) {
        TreeNode node = new TreeNode();
        node.setId("node" + i);
        node.setText("name"+i);
        treeD.getChildren().add(node);
    }
    return treeD;
}
public void setTreeD(Tree t) {
    this.treeD = t;
}

Я хочу отловить клик(выделение) по всем TreeNode. Как это можно сделать?
PM MAIL   Вверх
necromancer
Дата 14.10.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 26.7.2006
Где: Москва

Репутация: 6
Всего: 7



очень похоже на то что перед 
return treeD;
нужно добавить метод onclick(не уверн что он есть =) ) =)
так же в разметке можно дописать:
actionListener="#{TestTreeBean.nodeExpanded}"
или же попробовать выставить это значение в бине (за это не уверен)

Это сообщение отредактировал(а) necromancer - 14.10.2008, 13:34


--------------------
С уважением, 
                 Виталий Смык
----------------------------------------------------------------------------------------------
SCJP, SCWCD, OCA
http://dev.maryno.net/video/
PM MAIL WWW ICQ Skype   Вверх
Gugle
Дата 14.10.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 9.12.2005

Репутация: нет
Всего: нет



Цитата

нужно добавить метод onclick(не уверн что он есть =) ) =)

Правильно. Метода нет.
Цитата

actionListener="#{TestTreeBean.nodeExpanded}"

Есть что то похожее, но actionListenerExpression. Реагирует только на "открытие дерева", т.е. в момент клика на "плюсик". И это при условии что его положить на treeNode.
Цитата

или же попробовать выставить это значение в бине (за это не уверен)

Эээ... Это как?
PM MAIL   Вверх
necromancer
Дата 14.10.2008, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 26.7.2006
Где: Москва

Репутация: 6
Всего: 7



забудем все что я сказал ранее! =)
>Я хочу отловить клик(выделение) по всем TreeNode. Как это можно сделать? 
а ты что в дерево добавляешь? компонент? ну так и добавь компоненту обработку события.


--------------------
С уважением, 
                 Виталий Смык
----------------------------------------------------------------------------------------------
SCJP, SCWCD, OCA
http://dev.maryno.net/video/
PM MAIL WWW ICQ Skype   Вверх
Gugle
Дата 16.10.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 9.12.2005

Репутация: нет
Всего: нет



Пробовал. У компонента есть следующие методы:

1.
Код

TreeNode node = new TreeNode();
node.addActionListener(new javax.faces.event.ActionListener() {
     public void processAction(ActionEvent arg0) throws AbortProcessingException {
              System.out.println("Test");
    }
});

Не реагирует. По все вероятности реакция будет только на IconHyperlink, мне же нужен request.

2.
Код

node.setActionExpression(new javax.el.MethodExpression() {

                @Override
                public MethodInfo getMethodInfo(ELContext arg0) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }

                @Override
                public Object invoke(ELContext arg0, Object[] arg1) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }

                @Override
                public String getExpressionString() {
                    throw new UnsupportedOperationException("Not supported yet.");
                }

                @Override
                public boolean equals(Object arg0) {
                    throw new UnsupportedOperationException("Not supported yet.");
                }

                @Override
                public int hashCode() {
                    throw new UnsupportedOperationException("Not supported yet.");
                }

                @Override
                public boolean isLiteralText() {
                    throw new UnsupportedOperationException("Not supported yet.");
                }
            });

Чет много всего переопределять.

3. Пошел другим способом:
Код

rivate void _init() throws Exception {
//***
    MethodExpression me = getMethodExpression("#{PageFaceTest.actionListener}");
    node.addActionListener(new MethodExpressionActionListener(me));
    MethodExpression me1 = getMethodExpression1("#{PageFaceTest.hyperlink_action}");
    node.setActionExpression(me1);
//*** вырезал лишнее
}
private MethodExpression getMethodExpression(String name) {
        Class[] argtypes = new Class[1];
        argtypes[0] = ActionEvent.class;
        FacesContext facesCtx = FacesContext.getCurrentInstance();
        Application app = facesCtx.getApplication();
        ExpressionFactory elFactory = app.getExpressionFactory();
        ELContext elContext = facesCtx.getELContext();
        return elFactory.createMethodExpression(elContext, name, null, argtypes);
 }
private MethodExpression getMethodExpression1(String name) {
        Class[] argtypes = new Class[0];
        FacesContext facesCtx = FacesContext.getCurrentInstance();
        Application app = facesCtx.getApplication();
        ExpressionFactory elFactory = app.getExpressionFactory();
        ELContext elContext = facesCtx.getELContext();
        return elFactory.createMethodExpression(elContext, name, null, argtypes);
}
public String hyperlink_action() {
        System.out.println("hyperlink_action");
        return "case1";
}
public void actionListener(ActionEvent event) {
        System.out.println("actionListener " + event.getSource().toString());
}

Надеялся что хоть один откликнется, но опять тишина.
По все вероятности эти методы работают только с ссылками.
PM MAIL   Вверх
necromancer
Дата 17.10.2008, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 26.7.2006
Где: Москва

Репутация: 6
Всего: 7



да не комопнент в смысле нода =)
в ноду ты вставляешь другой компонент, который занимается непосредственно отрисовкой, например html:outputText или даже html:commandLink


--------------------
С уважением, 
                 Виталий Смык
----------------------------------------------------------------------------------------------
SCJP, SCWCD, OCA
http://dev.maryno.net/video/
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.