Я собрал этот кусок кода из частей всего сообщества XPages, вы могли бы признать некоторые из них:Поиска XPages события
var submitId= param.get('$$xspsubmitid');
var component:com.ibm.xsp.component.xp.XspEventHandler= PageData.getComponentByClientId(submitId, view);
dprint("id= " + component.getClass().toString())
var params= component.getParameters();
for(var x:com.ibm.xsp.complex.Parameter in params) {
dprint(x);
dprint(x.getName());
dprint(x.getValue());
}
PageData является управляемым компонентом, и getComponentByClientId делает именно то, что он говорит; его код, для полноты:
public UIComponent getComponentByClientId(String id, UIComponent root) {
UIComponent component= new XspQuery().byClientId(id, root);
return component;
}
И как для XspQuery:
package org.openntf.xsp.extlib.query;
Я хочу, чтобы найти имя текущего поля, которое вызвало частичное обновление, а форма это в. Оба элемента, поля и формы являются внутренними для моего приложения. Их имена помещаются в двух параметрах событий, например:
<xp:this.parameters>
<xp:parameter name="formName" value="#{javascript:compositeData.formName}"></xp:parameter>
<xp:parameter name="fieldName" value="#{javascript:compositeData.fieldName}"></xp:parameter>
</xp:this.parameters>
Вопрос: когда я ставлю этот код в одном из страниц событий afterRestoreView, beforeRenderResponse или afterRenderResponse, имя параметра правильно напечатанные, но вызов getValue() никогда ничего не возвращает! Точнее: выполнение кода останавливается, я еще не знаю точной ошибки (что не совсем точно, я признаю).
Как я могу получить эти параметры?
TIA!
Я немного смущен: как ваши * поля * делают частичное обновление? –
Лучшее, что я могу предложить, это подтвердить с помощью отладки, что использование $$ xspsubmitid действительно дает вам eventHandler компонента, который запускает событие. Я думаю, что submitId на самом деле является идентификатором HTML-формы, а не компонентом, запускающим обновление, хотя я могу ошибаться. Кроме того, динамическая привязка, вероятно, не будет работать в restoreView. –
@Sven: мои поля похожи на группы радио, флажки, выпадающие списки и т. Д., Которые могут вызвать частичное обновление. Все поля динамически создаются, их определение находится внутри документа Notes, и вместе они действуют как форма. На странице может быть несколько форм, и я хочу знать, какая из форм вызвала обновление (поэтому мне не нужно перепрограммировать поля в других формах). –