Можем ли мы иметь компонентный компонент в составном компоненте JSF2? - PullRequest
3 голосов
/ 08 июня 2010

Мне было интересно, как я мог бы создавать bean-компоненты "на уровне компонента", или, так сказать, "локальные переменные внутри составного компонента", которые являются частными для экземпляра составного компонента и живут так же долго, как этот экземплярlife.

Ниже приведены более подробные сведения, объясненные на примере:

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

Я могу создать составной компонент, который имеет:

  • текстовое поле для принятия математического выражения
  • с двумя кнопками, которые называются«Evaluate» и «Plot»
  • другой вложенный компонент, который чертит функцию

Это, очевидно, отдельный фрагмент функции;так что тот, кто хочет использовать его, может просто сказать

Но очевидно, что для реализации потребуется объект Java - что-то, что оценивает выражение, что-то, что вычисляет точки графика и т. Д. - и я думаю, что это может быть bean-компонент - ограниченный только для this экземпляр этого компонента, а не bean-объекта в области просмотра или области видимости, который используется всеми экземплярами компонента.

Как создать такой bean-компонент?Это возможно даже с композитными компонентами?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2011

Кроме того, вы также можете создать пользовательский UIComponent на основе Java. Хотя для этого в JSF 1.x требовалось смешное количество «движущихся частей», в JSF 2.0 и Facelets их на самом деле не так много.

Обычно при создании пользовательских UIComponents на основе Java следует быть умеренным, поскольку в большинстве случаев составные компоненты проще и проще. Тем не менее, UIComponents на основе Java по-прежнему имеют свое применение, и реальные вычисления могут быть таким использованием.

0 голосов
/ 09 июня 2010

Нет области действия "для каждого компонента". Но вы все равно можете достичь желаемого эффекта.

Используйте bean-компонент ViewScoped для выполнения оценки и построения графиков - эти функции "не сохраняют состояния" и поэтому передаются вашим вводом.

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

Если вы действительно хотите сохранить все, что содержится в компоненте, я думаю, вы могли бы поддержать ввод с помощью bean-компонента ViewScoped, который содержит карту с ключом ввода. Не уверен, что это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...