2012-02-18 2 views
2

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

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

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

Так что мой вопрос:

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

ответ

3

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

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

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

@Inject @HttpParam 
private String foo; 

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

+0

The bean is view scoped. Извините, я предположил, что это было связано с тем, что я использую '', который предоставляет способ вызова обработчиков действий из javascript, а затем обновления части страницы. Такие вещи обычно не работают с бобами с запросом. Я начал использовать фазерные слушатели на одной странице, но на данный момент это немного неудобно. –

+0

Ваш лучший выбор - это ''. – BalusC

+0

Я начал читать ViewParam vs @ManagedProperty. Прежде всего, я не знал, что '' может использоваться для чего угодно, кроме параметров, закодированных в URL. Во-вторых, согласно этой статье параметры представления задаются на этапе «Обновить значения модели», что является двумя фазами после значений запроса заявки, которые, я полагаю, являются тем, где вызывается действие прослушивателей. Я, вероятно, уйду ... Я начну внимательно его читать. Благодарю. –

Смежные вопросы