Как Передать Свой Параметр Для Обработки В Ssjs

lionk

Well-known member
05.04.2007
310
2
#1
Никак не могу понять до конца что именно сабмитится для обработки в ssjs.
Может кто то на пальцах объяснить?
Когда я агента вызываю или форму сабимтю я точно понимаю и контролирую что передаётся на сервер для обработки.
А что передаётся когда к примеру я нажимаю на ссылку у которой определён onCilck SSJS?
И как контролировать это?



И практический вопрос, к примеру:
у меня на странице есть JavaScript переменная var rekv="333", как мне передать её в ssjs обработчик и потом сделать частичное обновление страницы?

Раньше я бы сделал асинхронный вызов агента, передал параметр, принял ответ и жаваскриптом отобразил результат. Как мне сделать подобное на идиологии xpage?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#2
Общение между CSJS и SSJS произвожу по средствам полей, скрытых полей, параметров или имен к элементам.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#4
прошу прощения... атрибуты

element.setAttribute()
element.attributeName = 'value'
 

lionk

Well-known member
05.04.2007
310
2
#5
всёравно не догдал. чего атрибуты, можно пример?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#6
Ну я, честно говоря не понимаю постановки задачи.
Зачем разносить код между клиентом и сервером? Таких случаев реально мало. Ну по крайней мере я с таким почти не встречался.
Давай конкретный пример.

Агент через SSJS запускается легко. На SSJS есть все необходимые классы почти все как LS + еще и добавлены @-формулы.
 

lionk

Well-known member
05.04.2007
310
2
#7
>Зачем разносить код между клиентом и сервером?
Ну например у тебя есть большой яваскрипт объект(класс) с которым постоянно работает пользователь, он инициализируется при загрузке страницы, и НЕ предпологает необходимость отправки данных ВО ВРЕМЯ работы с ним пользователем. когда пользователь закончил и всё сделал, нужно сохранить несколько занчений всего объекта, вот их и передать на сервер. хочу отметить что это разделение "естественное", и между собой по логике не связанное.

пререфразирую вопрос:
как передать данные в ssjs НЕ используя поля(именованные объекты XPAGE) ?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#8
как бы ты передавал данные в классической реализации?
Я тебе предложил вариант.. заполнять нужные поля или атрибуты полей, элементов, а дальше обрабатываешь на сервере.
Ты же все равно как-то передавать данные надо.
Ну и зачем все делать на клиенте? Может лучше нагружать сервер?
 

lionk

Well-known member
05.04.2007
310
2
#9
>Ну и зачем все делать на клиенте? Может лучше нагружать сервер?
Ну зачем пить молоко когда есть пиво? :D

Добавлено: Хотя, а как изменять яваскриптом атрибуты элементов, и потом в ssjs их считывать?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#10
CSJS
JavaScript:
document.getElementById("#{id:in1}").setAttribute("name", "submit_content");
SSJS
JavaScript:
getComponent("in1").getAttributes()
 

JohnLemon

Well-known member
20.08.2014
274
2
#11
CSJS
JavaScript:
document.getElementById("#{id:in1}").setAttribute("name", "submit_content");
SSJS
JavaScript:
getComponent("in1").getAttributes()
У меня не получается что то, на одну кнопку делаю на клиенте
Код:
document.getElementById("#{id:inputText1}").setAttribute("name", "dsads");
на вторую на сервере
Код:
sessionScope.sesScope = getComponent("inputText1").getAttributes();
в inputText такая бяка javax.faces.component.UIComponentBase$AttributesMap@0, что это )) ?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#12
.getAttributes();
ты не думал взять конкретный атрибут? а не все сразу?
 

JohnLemon

Well-known member
20.08.2014
274
2
#13
.getAttributes();
ты не думал взять конкретный атрибут? а не все сразу?
Да конечно пробовал, если .getAttributes(name) ошибка Script interpreter error, line=1, col=66: [ReferenceError] 'name' not found если .getAttributes("name") Script interpreter error, line=1, col=52: Java method 'getAttributes(string)' on java class 'com.ibm.xsp.component.xp.XspInputText' not found
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#14
учись пользоваться хелпом и искать в интернете.
Код:
var component=getComponent(”nameOfCheckBoxGroup”).getAttributes().get(”value”);
 

JohnLemon

Well-known member
20.08.2014
274
2
#15
учись пользоваться хелпом и искать в интернете.
Код:
var component=getComponent(”nameOfCheckBoxGroup”).getAttributes().get(”value”);
Блин, спасибо, но сделал так
Код:
sessionScope.sesScope = getComponent("inputText1").getAttributes().get("name");
в итоге в inputText1 ничего не появляется, хотя в Data указал SessionScope - sesScope((
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#18
Ты явно чего-то недопонимаешь.
Что за документ? Что за поле?
Документ открыт на странице? Или это совершенно новый документ?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 802
21
#20
Документ открыт на странице? Набросай простую страницу и выложи код