Программная привязка поля редактирования в пользовательском элементе управления к полю формы - PullRequest
1 голос
/ 24 января 2012

У меня есть форма заметок с рядом полей, таких как city_1, city_2, city_3 и т. Д.

У меня есть XPage, и на этом XPage у меня есть повтор.

Повтор основан на массиве с десятью значениями 1 - 10

var repArray = new Array() ;
for (var i=1;i<=10;i++) {
repArray.push(i) ;
}

return (repArray);

Внутри повторения у меня есть пользовательский элемент управления, который используется для отображения полей от city_1 до city_10

Повтор имеет пользовательское свойство docdatasource, которое передается в Он также имеет строковое пользовательское свойство с именем cityFieldName, которое вычисляется с использованием повторения. имя коллекции, чтобы в первой строке повтора это был city_1, а во второй - city_2 и т. д.

Редактируемое текстовое поле в пользовательском элементе управления связывается по формуле EL compositeData.docdatasource [compositeData.cityFieldName]

Это работает нормально, но каждый раз, когда я добавляю новые поля, я должен помнить, чтобы создать новое пользовательское свойство и затем ссылку на него на родительской странице.

Я хотел бы иметь возможность просто вычислять привязку данных, например

compositeData.docdatasource['city_' + indexvar]

где indexvar - это переменная, представляющая номер текущей строки.

Возможно ли это? Я читал, что вы не можете использовать «+» в языке выражений.

Ответы [ 3 ]

2 голосов
/ 26 января 2012

Во-первых: вам не нужен массив для счетчика.Всего 10 (число) - тоже повторяется 10 раз.Но вы можете создать массив массивов:

var repArray = [];
for (var i=1;i<=10;i++) {
   repArray.push(["city","street","zip","country","planet"]) ;
}
return repArray;

, тогда вы сможете использовать

#{datasource.indexvar[0]}

для привязки города,

#{datasource.indexvar[1]}

для привязки улицы,и т. д.

Вносит небольшую опасность возиться с последовательностью массива, если это проблема, вам нужно глубже изучить использование объекта здесь.

1 голос
/ 24 января 2012

вычислить в javascript и использовать что-то вроде

var viewnam = "#{" +  (compositeData.searchVar )+ "}"
return viewnam

убедитесь, что это вычисляется при загрузке страницы в пользовательском элементе управления

0 голосов
/ 24 января 2012

Мне никогда не удавалось выполнить сложение в EL, но я очень преуспел в том, что просто вычислял имена полей вне пользовательского элемента управления и затем передавал эти значения в пользовательский элемент управления.

Я могу прислать вам какой-нибудь рабочий код, если хотите, из презентации, которую я дал.

...