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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jboss seam: передать Set<Date> в javascript 
:(
    Опции темы
leniviy
Дата 1.10.2011, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть манагед бин:
Код

class MyBean {
  public Set<Date> getDates() {
    Set<Date> rslt = new HashSet<Date>();
    rslt.add(new Date(111,1,1));
    rslt.add(new Date(111,2,1));
    return rslt;
 }
}

Есть страничка
Код

...
    <ui:define name="pageContent">
    <script type="text/javascript">
      var dates = #{myBean.dates};
    </script>
...

мне надо, чтобы было так:
var dates = [new Date(2011,1,1), new Date(2011,2,1)];

#{myBean.dates} резолвится как "[2011-02-01,2011-03-01]".

Я пробовал через <a4j:support data="#{myBean.dates}" oncomplete="dates = data;">
Он якобы делает сериализацию через JSON.
Тогда получается массив объектов, похожих на Date, но не Date: { year: 111, month: 1, date: 1,  timeZone... }.
И кроме того я не хочу делать дополнительный ajax реквест.

У меня одна мысль: добавить ещё проперти в мой бин, который будет возвращать "[new Date(2011,1,1), new Date(2011,2,1)]".


Это сообщение отредактировал(а) leniviy - 1.10.2011, 10:28
PM MAIL   Вверх
MisterCleric
Дата 1.10.2011, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Цитата

"[2011-02-01,2011-03-01]"


Дык, а в чем проблема? Это ж и есть JavaScript массив дат


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
leniviy
Дата 2.10.2011, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2011-02-01 - это интовое выражение с двумя минусами, а не дата.

PM MAIL   Вверх
MisterCleric
Дата 2.10.2011, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Цитата

2011-02-01 - это интовое выражение с двумя минусами, а не дата

Сранно, очень странно...
У меня есть такое:
Код

 <script type="text/javascript">
            var maxFutureDate = '#{maxFutureDate}';
            var serverTimeZoneOffset = '#{timeZone.rawOffset}' / 1000 / 60 / 60;
            var serverTimeZone = 'GMT' + (serverTimeZoneOffset >= 0 ? "+" + serverTimeZoneOffset : serverTimeZoneOffset) + '00';
        </script>


И все отлично из Seam приезжает в JavaScript


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
leniviy
Дата 2.10.2011, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У вас maxFutureDate - строка, а не дата. 
PM MAIL   Вверх
leniviy
Дата 2.10.2011, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Честно говоря, я понял, что для моей задачи лучше подходит не массив дат, а объект:

чтобы можно было проверять наличие даты в наборе.
Код

        var reportDates = #{ddaBean.JSReportDates}; // { '2011-7-1':1, '2011-7-2':1 };
        function disablementFunction(day){
            var d = day.date;
            var s = (1900+d.getYear())+'-'+(1+d.getMonth())+'-'+d.getDate();
            return (reportDates[s] == 1);
        }

странный глюк форума: пишу code=java, а он делает javascript 
Код

    @SuppressWarnings("deprecation")
    public String getJSReportDates() {
        SortedSet<Date> reportDates = getReportDates();
        if (reportDates == null)
            return "null";
        StringBuilder sb = new StringBuilder(reportDates.size()*22);

        sb.append('{');
        boolean b = false;
        for (Date d : reportDates) {
            if (b)
                sb.append(',');
            else
                b = true;
            sb.append("'").append(1900+d.getYear()).append('-').
                append(1+d.getMonth()).append('-').
                append(d.getDate()).append("':1");
        }
        sb.append('}');
        return sb.toString();
    }


Это сообщение отредактировал(а) leniviy - 2.10.2011, 14:19
PM MAIL   Вверх
MisterCleric
Дата 2.10.2011, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Цитата

У вас maxFutureDate - строка, а не дата.  


Как у нас на Украине говорят:

Цитата

Не кажи гоп, поки не перепригнеш


Еще раз такой код у меня на странице.
Потом у меня есть GWT-module, в котором написано такое:
Код

public static native Date getMaxFutureDate()
        /*-{
            return $wnd.maxFutureDate;
        }-*/;


Так что давайте не спорить, у кого еще строки получаются...

Добавлено через 2 минуты и 34 секунды
Да, и если не заметил, то следующая у меня строка:
Код

var serverTimeZoneOffset = '#{timeZone.rawOffset}' / 1000 / 60 / 60;

Вычисляемое значение. А вот если бы действительно  '#{timeZone.rawOffset}' было бы строкой, смог бы я посчитать какое там смещение у TimeZone?


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
leniviy
Дата 2.10.2011, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что за native? GWT что-ли?

Добавлено @ 14:52
Цитата(MisterCleric @ 2.10.2011,  14:43)
А вот если бы действительно  '#{timeZone.rawOffset}' было бы строкой, смог бы я посчитать какое там смещение у TimeZone?

Да, смог бы.
Код

var serverTimeZoneOffset = '3000' / 1000;
document.write(serverTimeZoneOffset);

выводит 3


Это сообщение отредактировал(а) leniviy - 2.10.2011, 14:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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