Как установить или ввести параметры запроса в управляемый компонент? - PullRequest
2 голосов
/ 18 февраля 2012

Я использую несколько PrimeFaces <p:remoteCommand/> s для вызова различных слушателей действий на странице. В вызовах javascript я передаю параметры. Эти параметры поступают в карту параметров запроса.

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

Я хочу либо централизовать это в одном событии, либо, что еще лучше, каким-то образом автоматически ввести значения параметров запроса в компонент.

Итак, мой вопрос:

  1. Существует ли тип события, который я могу обработать, чтобы обработать параметры запроса до вызова каких-либо слушателей действий?
  2. Еще лучше, есть ли способ автоматически вставить параметры запроса в свойства бина?

1 Ответ

3 голосов
/ 18 февраля 2012

Если управляемый бин имеет область запроса, вы можете использовать для этого @ManagedProperty. Карта параметров запроса уже в контексте EL доступна для #{param}.

@ManagedProperty("#{param.foo}")
private String foo;

Если управляемый бин находится в более широкой области, тогда вы не можете использовать @ManagedProperty для этого. Однако, если вы используете CDI или можете использовать его, вы можете homegrow аннотация для этого.

@Inject @HttpParam
private String foo;

Альтернативой для управляемых компонентов JSF в более широкой области является тег <f:viewParam>. Я не могу только сказать по опыту, будет ли это работать в сочетании с <p:remoteCommand>, но теоретически это должно работать так же хорошо. См. Также ViewParam против @ManagedProperty (value = "# {param.id}") .

...