JSF commandLink, созданный программно внутри таблицы, не работает

Из документации на ndarray с сигнатурой.

ndarray(shape, dtype, buffer, offset, strides, order)

  1. Если buffer - None , тогда используются только форма, dtype и порядок.
  2. Если buffer является объектом, отображающим интерфейс буфера, тогда все ключевые слова интерпретируются.
blockquote>

Кажется, что для первого примера, хотя buffer является np.array целых чисел, ndarray интерпретирует его как другой тип. Вы должны дать ему необязательный аргумент dtype = int, чтобы ndarray явно знал, что его элементы имеют тип integer.

np.ndarray(shape = (2,1), dtype = int, buffer = np.array([1,2,3,4]))

1
задан robson 20 January 2019 в 22:28
поделиться

1 ответ

Краткое объяснение

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

Оба ваших примера на самом деле не совсем верны. Однако со ссылкой, сгенерированной за пределами таблицы, обработчик представления каким-то образом может определить идентификатор для компонента и оказывается в нужном месте при выполнении действия.

Глядя на код

Если мы посмотрим на то, что генерирует JSF Mojarra при вызове приведенного выше кода, мы увидим следующее:

Ссылки внутри таблицы получают ссылку на [111 ], но нет идентификатора, связанного с компонентом, поэтому ссылка не будет работать.

Ссылка вне таблицы получает ссылку на form:j_idt5 и генерируется идентификатор j_id1:javax.faces.ViewState:0. Так что, хотя это действительно вызывает действие - корреляция link / id не совсем верна.

Так ясно, что рендерер может определить сгенерированный идентификатор для ссылки, но он никогда не устанавливает этот сгенерированный идентификатор на фактический компонент / тег. Это в некоторой степени проблема.

Решение проблемы

Решение в том, чтобы помочь JSF и обработчику представления выяснить путь к компоненту с действием. Вы можете сделать это, принудительно установив идентификатор при программной генерации ссылки на команду - внутри метода getTable() добавьте следующий код:

inlink.setId("link");

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

0
ответ дан Adam Waldenberg 20 January 2019 в 22:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: