В модуле заказа на поставку нам нужно задать определенные вопросы в зависимости от метода выбора источника, типа конкурса и общей стоимости ПО. Эти вопросы, вероятно, будут меняться со временем и между различными экземплярами базы данных.Динамическое связывание в режиме повторного управления
Поэтому у меня есть представление, содержащее вопросы, так что я могу динамически добавлять вопросы в свой XPage, не меняя код. Ответ на каждый вопрос будет сохранен в поле. Таким образом, документ, содержащий этот вопрос, имеет поле FieldName, которое используется для предоставления имени поля, которое будет использоваться. К сожалению, мне не повезло связать эти динамические поля с документом.
<xp:this.data>
<xp:dominoView var="competitionQuestionView"
viewName="CompetitionQuestions">
</xp:dominoView>
</xp:this.data>
<xp:repeat id="repeat2" rows="30" var="rowData" style="width:700px"
value="#{competitionQuestionView}">
<xp:label id="label1">
<xp:this.value><![CDATA[#{javascript:rowData.getColumnValue("Question");}]]></xp:this.value>
</xp:label>
<xp:inputText id="inputText1">
<xp:this.rendered><![CDATA[#{javascript:rowData.getColumnValue("FieldType") == "Text Box"; }]]></xp:this.rendered>
<xp:this.value><![CDATA[#{javascript:poDoc[rowData.getColumnValue ("FieldName")];}]]></xp:this.value>
</xp:inputText>
</xp:repeat>
Я пробовал различные способы, чтобы сделать это, в том числе делая dynamicInputText пользовательский элемент управления, чтобы передать имя поля, но без удачи. Ближайший я получил, когда я использовал это:
<xp:this.value>
<![CDATA[#{javascript:tmp = rowData.getColumnValue ("FieldName");'#{poDoc.'+tmp+'}';}]]>
</xp:this.value>
Это дало мне что-то вроде # {} poDoc.justification, что было то, что я хотел передать в «связывания», но в конечном итоге, как отображение текстовое значение.
Я попытался использовать $, чтобы вычислить значение при загрузке, но я предполагаю, что это не сработало, потому что мой (и rowData) вид недоступен при загрузке. В конечном итоге это создаст проблему, когда я захочу использовать частичные обновления из-за обновлений по критериям, полям которых я хочу отобразить в любом случае.
Некоторые ответы на другие вопросы выглядели многообещающими, но код не был предоставлен, поэтому я не мог понять это.
+1: # {poDoc [rowData.FieldName]} будет работать. К сожалению, EL обычно недооценивают или неправильно понимают разработчики. –
Как ни странно, ни сначала не работали. Я продолжал сбивать ошибку, когда bean был нулевым (с именем поля как свойство). Затем я начал работать с dataContexts, созданным путем копирования и вставки кода вместо редактирования моего. Это спасение жизни, Тим. Благодаря! –