Решено Как вывести результаты работы метода (об ошибке)

Тема в разделе "Lotus - Xpages", создана пользователем Amfion, 14 июл 2015.

  1. Amfion

    Amfion Well-Known Member

    Регистрация:
    26 май 2010
    Сообщения:
    138
    Симпатии:
    3
    Как можно вывести диалогом результат работы метода.

    Есть класс документ, в нем реализован метод insertParent
    На Xpages в диалоге по кнопке ок вызывается метод. Как можно вывести информацию о работе данного метода для пользователя.
    Еше вопрос как можно в методе получать SessionScope, ViewScope
     
  2. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
    пиши инфу напр. в поле (или в глобальную переменную, хоть) и показывай, напр. в dijitDialog

    в CSJS напр. так: var myVar = #{javascript:viewScope.get("scopeVar")}
    такая конструкция выполняет SSJS в CSJS (красное - серверный скрипт)
     
  3. Amfion

    Amfion Well-Known Member

    Регистрация:
    26 май 2010
    Сообщения:
    138
    Симпатии:
    3
    А как получить viewScope в методе что б записать ошибку. И как вызывается этот диалог. Можно какой то пример?
     
  4. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
    про диалоги посмотри всю ветку
    про viewScope:
    1 viewScope (и др. Scope)- серверная переменная, а "метод" у тебя описан в "клиенте"
    2 в "клиенте" (CSJS) можно выполнить серверный (SSJS) скрипт: #{javascript:тут серверный скрипт}
    3 в этом скрипте получаешь свой viewScope:
    var myVar = #{javascript:viewScope.get("scopeVar")}
    или var myVar = #{javascript:viewScope.scopeVar}
    scopeVar - твоя запомненная переменная
    4 а можешь в SSJS, там, где запоминаешь viewScope, параллельно записать его в поле, чтобы использовать в методе (CSJS) - взять значение из поля (value (editableField) или innerHTML (computedField), в зависимости, что за поле у тебя
     
  5. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
    ЗЫ
    для понимания:
    в CSJS
    var element = document.getElementById("#{id:elementID}")
    и
    var element = document.getElementById("#{javascript:getClientId("elementID")}");
    эквивалентны (т.е ID элемента в клиенте вычисляется сервером! во время построения DOM дерева)
     
  6. Amfion

    Amfion Well-Known Member

    Регистрация:
    26 май 2010
    Сообщения:
    138
    Симпатии:
    3
    Метод описан не в клиенте а в классе.

    Для наглядности
    <xp:button id="button1" value="Добавит родительскую заявку">
    <xp:eventHandler event="onclick" submit="false">
    <xp:this.script><![CDATA[XSP.openDialog('#{id:dialog1}')]]></xp:this.script>

    </xp:eventHandler></xp:button>
    открываем диалог
    <xe:dialog id="dialog1" title="Родительская заявка">
    <xe:dialogContent id="dialogContent1"><xp:table style="width:100.0%"><xp:tr>
    <xp:td style="width:25.0%;text-align:right">Номер:</xp:td>
    <xp:td>
    <xp:inputText id="inputText21"></xp:inputText></xp:td></xp:tr><xp:tr>
    <xp:td style="text-align:right">Год:</xp:td>
    <xp:td>
    <xp:inputText id="inputText22"></xp:inputText></xp:td></xp:tr></xp:table></xe:dialogContent>
    <xe:dialogButtonBar id="dialogButtonBar1">
    <xp:button id="button2" value="Добавить">
    <xp:eventHandler event="onclick" submit="true"
    refreshMode="partial" refreshId="viewPanel1">
    <xp:this.script><![CDATA[alert('Добрый день')]]></xp:this.script>
    <xp:this.action><![CDATA[#{javascript:claim.insertParentClaim("111111111", "22222222")}]]></xp:this.action>
    </xp:eventHandler></xp:button></xe:dialogButtonBar></xe:dialog>
    По кнопке добавить мне надо вызвать метод insertParentClaim и вывести его результат на Xpages.

    И когда вместо 111111111 беру из диалога значение getComponent("inputText21").getValue() все время первый раз по кнопке идет Null
     
    #6 Amfion, 22 июл 2015
    Последнее редактирование модератором: 22 июл 2015
  7. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
    ????;)
    Работая с диалогом, как у тебя, это чисто работа в клиенте: сервер ещё ничего не знает о том, что находится в "inputText21" "inputText22", а ты берёшь значение в SSJS - getComponent("inputText21").getValue()
    Делай, как JohnLemon написал, напр. или передай это значение на сервер (в CSJS, там где у тебя alert('Добрый день')), перед тем, как им воспользоваться: напр, через Submitted Value (поле "$$xspsubmitvalue" есть всегда на xpages и северу оно доступно)
    ЗЫ
    На мой взгляд, не стоит тащить из ExtLib элементарные контролы, расширять им область применения и получать на них гемор, пока ещё не врубился, как оно работает.
    Диалогом может быть любой контейнер, с position:absolute и display:hidden - давай ему нужные координаты и показывай. И всё, никаких гемороев с элементами на нём.
     
    #7 alexas1, 22 июл 2015
    Последнее редактирование модератором: 24 июл 2015
Загрузка...

Поделиться этой страницей