Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF 2.0 получение данных из bean из клиентского javascript. / 11 сообщений из 11, страница 1 из 1
26.03.2012, 17:27:23
    #37723643
JSF 2.0 получение данных из bean из клиентского javascript.
Добрый день.
У меня вот какая задача:

1. На jsf 2.0 страничк есть карта.
2. Есть javascript функция которая выводит на карту значки. Координаты значков храниятся в массиве на клиенте.
3. Данные о координатах значков изначально хранятся в beans время жизни SessionScoped.
4. Данные на клиенте должны обновлять асинхронно.
5. Разные пользователи должны видеть только те значки, которые им полагается. т.е. в bean данные для конкретного авторизованного пользователя.

Сервер GlassFish 3.1.1 среда разработки NET BEANS 7.0.1 проект JSF

Подскажите сушествует ли возможность из клиентского javascript получать данные beans. Ниже приведен фрагмент beana. (данные в итоге будут запрашиваться из базы данных!).

Если для этого следует использовать web service, или REST FULL service на стороне сервера и jquery на клиенте, тогда не понимаю как из кода сервиса получить доступ к beans пользовательской сессии.
Мне кажется что получить данные из bean и засунуть их в массим можно с помощью ajax который вшит в JSF. Но как ему указать что нужно обновить не визуальный компонент (в данном случае это таблица с id = "frt"), а массив....
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
.........

                    <h:dataTable value="#{ReportTest.list}" var="item" id="frt">
                    <h:column>
                        <f:facet name="header" >
                            <h:outputText value="Код"/>
	                </f:facet>                           
                        <h:outputText value="#{item.id}"/>
	            </h:column>
	            <h:column>
                        <f:facet name="header" >
                            <h:outputText value="Значение"/>
	                </f:facet>                           
	                <h:outputText value="#{item.name}"/>
	            </h:column>
                    </h:dataTable>

                    <h:commandLink value="обновить с помощью AJAX">
                        <f:setPropertyActionListener target="#{ReportTest.listener1}" value="1" />
                        <f:ajax event="click" render="frt"/>
                    </h:commandLink>
.........





Подскажите куда копать, я новичек в JSF. Спасибо.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
....
@Named(value = "ReportTest")
@SessionScoped
public class NewJSFManagedBean1 implements Serializable {

    private List<Table1> list;
  
    public List<Table1> getList() {
        list = new ArrayList<Table1>();
        list.add(new Table1(15, "xsdefrtty"));
        list.add(new Table1(16, "aDfrer"));
        list.add(new Table1(17, "Dfsrer"));
        list.add(new Table1(18, "fDfredr"));
        list.add(new Table1(19, "65Dgfrer"));
        return list;
    }
.....
...
Рейтинг: 0 / 0
26.03.2012, 17:40:12
    #37723688
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF 2.0 получение данных из bean из клиентского javascript.
На клиенте заводишь структуру данных, в которой хранишь все что тебе надо. На сервере модифицируешь бин, добавляя ему метод допустим getJSONModel(), в нем конвертируешь свой массив в JSON структуру, которую создал на клиенте. Далее вешаешь на странице периодический ajax, который рендерит <h:panelGroup id="jsonData"><script>javascript_structure = #{bean.jsonModel}</script><h:panelGroup> вот и все, если говорить кратко я предлагаю сделать метод в бине который преобразует твою структуру в json, периодически делаешь ajax calls и ререндеришь панель, в которую включен яваскрипт, в котором можешь делать все что хочешь на javascript используя возвращенные с сервера данные, ну думаю вы идею уловили.
...
Рейтинг: 0 / 0
28.03.2012, 20:02:21
    #37728321
JSF 2.0 получение данных из bean из клиентского javascript.
допустим метод getJSONModel() вернет jSON. А как же результат присвоится переменной на клиентской строне:
<h:panelGroup id="jsonData"><script>javascript_structure = #{bean.jsonModel}</script><h:panelGroup>

так создал таймер на станичке jsf
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
.....
<h:outputScript library="javax.faces" name="jsf.js"></h:outputScript>
.....

function alt_()
{
    jsf.ajax.request(this,event,{render:'jsonData'});
    setTimeout(function() {alt_()}, 1000);
}



как должна выглядеть структура на клиенте что бы сработало javascript_structure = #{bean.jsonModel}?
ну и уж совсем здорого если пример метода bean который вернет json.


Спасибо.
...
Рейтинг: 0 / 0
28.03.2012, 20:23:47
    #37728350
JSF 2.0 получение данных из bean из клиентского javascript.
Вот что сделал:

в разметке страницы:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
......
        <h:outputScript library="javax.faces" name="jsf.js"></h:outputScript>
......
        <h:form prependId="false">
......
         <h:panelGroup id="jsonData">   
             <script>
                javascript_structure = #{ReportTest.dateCurrent}; 
                alert(javascript_structure);
             </script>
         </h:panelGroup>
......
        </h:form>
......



в коде javascript
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
.....
  var javascript_structure;
.....
function alt_()
{
    jsf.ajax.request(this,event,{render:'jsonData'});
    setTimeout(function() {alt_()}, 3000);
}




алерт (alert(javascript_structure);) не срабатывает. т.е. имеется ошибка перед ним.

я не совсем понимаю участок кода
Код: javascript
1.
2.
3.
4.
5.
6.
         <h:panelGroup id="jsonData">   
             <script>
                javascript_structure = #{ReportTest.dateCurrent}; 
                alert(javascript_structure);
             </script>
         </h:panelGroup>



в бине:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
....
@Named(value = "ReportTest")
@SessionScoped
....
    public String getDateCurrent(){
        Calendar calendar = Calendar.getInstance();
        
        return calendar.toString();
    }
...
Рейтинг: 0 / 0
28.03.2012, 20:26:07
    #37728351
JSF 2.0 получение данных из bean из клиентского javascript.
что то видемо я недопонимаю, если не сложно растолкуйте плиз.
...
Рейтинг: 0 / 0
28.03.2012, 20:34:57
    #37728367
JSF 2.0 получение данных из bean из клиентского javascript.
УРА СРАБОТАЛО, кавычки забыл

вот так нужно в разметке страницы сделать:
Код: javascript
1.
2.
3.
                    <h:panelGroup id="jsonData">   
                        <script>javascript_structure = '#{ReportTest.dateCurrent}';  alert(javascript_structure);</script>
                    </h:panelGroup>





Остался вопрос с jSON в bean и структурой на javascript на клиенте которая этот jSON поймет в вырожении "javascript_structure = '#{ReportTest.dateCurrent}'"

как создать такую структуру?
как в бине сденлать так что бы возвращался jSON содержаший с пару десятков элементов с полями id,lon,lat.

спасибо.
...
Рейтинг: 0 / 0
29.03.2012, 16:24:05
    #37729850
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF 2.0 получение данных из bean из клиентского javascript.
посмотри на java-библиотеки генерирующие json, тут вон в соседних ветках какие-то предлагали. Что делать дальше - вы решайте сами, я вам показал как можно передать данные с сервера jsf в клиентский javascript, javascript_structure - это всего лишь псевдоним для вашей переменной, или нескольких переменных, тут уж вы сами решайте что с ним делать, то ли eval() использовать толи гонять json
...
Рейтинг: 0 / 0
13.04.2012, 14:41:59
    #37752584
JSF 2.0 получение данных из bean из клиентского javascript.
Спасибо. Впринципе у меня все получилось.

Хотел бы зать еще вопросик.

конструкция:
Код: javascript
1.
2.
3.
4.
                    
<h:panelGroup id="jsonData">   
  <script>javascript_structure = '#{ReportTest.dateCurrent}';  alert(javascript_structure);</script>
</h:panelGroup>



может иметь "обратную силу" следующий код ошибочен, оно и понятно.
Код: javascript
1.
2.
3.
4.
                    
<h:panelGroup id="jsonData">   
  <script>'#{ReportTest.dateCurrent}' = javascript_structure;</script>
</h:panelGroup>



можно ли как нибуть передать данные в bean без элемента управления?
т.е. что то типо этого:
Код: javascript
1.
2.
3.
4.
                    
<h:panelGroup id="jsonData">   
  <script>'#{ReportTest.dateCurrent}' = 123;</script>
</h:panelGroup>



или

Код: javascript
1.
2.
                    
  <script>'#{ReportTest.dateCurrent}' = 123;</script>
...
Рейтинг: 0 / 0
13.04.2012, 15:44:05
    #37752790
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF 2.0 получение данных из bean из клиентского javascript.
через ajax если я правильно понял что вам надо
...
Рейтинг: 0 / 0
14.04.2012, 19:46:01
    #37754185
JSF 2.0 получение данных из bean из клиентского javascript.
через него кончно. На данный момент я записываю значение которое мне нужно передать на сервер в скрытое поле связанное с bean. используя метод:

Код: java
1.
2.
3.
...
	jsf.ajax.request(this,event,{execute:'forupdate'},{render:'jsonData'});
...



где "forupdate" это то самое скрытое поле.
Очень хочется отправлять данные напрямую, не используя скрытые поля, через ajax.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
20.06.2013, 12:27:25
    #38304543
kastiniel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF 2.0 получение данных из bean из клиентского javascript.
Здравствуйте, мне очень интересно, а как вы организовали подчитку координат... и можно ли хранить координаты на стороне сервера в БД...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF 2.0 получение данных из bean из клиентского javascript. / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]