У меня есть панель просмотра, в которой я хочу стилизовать цвет текста в строке на основе значения в документе.
<xp:viewPanel id="dataView1" var="rowData" rows="5"
rowClasses="#{javascript:rowData.getColumnValue('objectStatus') == 'Inactive' ? 'status-inactive' : ''}">
Это прекрасно работает, если в представлении есть хотя бы один документ, но если оно пустое, я получаю следующую ошибку:
com.ibm.xsp.exception.EvaluationExceptionEx: Ошибка при выполнении вычисляемого выражения JavaScript
Ошибка при выполнении вычисляемого выражения JavaScript
Ошибка интерпретатора сценария, строка = 1, столбец = 10: [ReferenceError] 'rowData' не найден
Полагаю, это как-то связано с тем, что rowData
не создается, если документ не существует, но я не могу понять, как это проверить.
Я пробовал if (rowData != null)
и !@IsNull(rowData)
, но все равно получаю ту же ошибку.
Как мне решить эту проблему?
(Обратите внимание, что я опаздываю к игре XPages.)
EDIT:
Спасибо всем за ввод, но я смог решить проблему, просто проверив количество просмотров:
if (getComponent('dataView1').getRowCount() > 0) {
'Inactive'.equals(rowData.getColumnValue('objectStatus')) ? 'status-inactive' : ''
}
РЕДАКТИРОВАТЬ 2:
У Кнута есть более быстрое решение, поэтому я дал ему должное.