Я использую JSF 2.2 на Glassfish 4.1.Передача переменной области действия, переданной как параметр метода действия EL, не работает
Я пытаюсь передать в качестве параметра запроса в качестве аргумента метода действия следующим образом: (. Знайте, что param
является implicit EL object)
// Example 1. This does not work.
// at url http://localhost:8080/app/[email protected]
<p:commandButton value="Place order" action="#{orderManager.placeOrder(param['email'])}" />
В журнале сервера я настроил его чтобы напечатать параметр метода, но я вижу, что пустая строка была передана, а не «[email protected]», как я и ожидал.
Я подтвердил, что моя общая конфигурация работает. Если я заменю выше фрагмент кода со следующим, а затем «[email protected]» выводится в журнал сервера:
// Example 2. This works.
<p:commandButton value="Place order" action="#{orderManager.placeOrder('[email protected]')}" />
Я также подтвердил, что мое использование EL неявных объектов осуществима. Следующий фрагмент кода работает, если я получить параметр из FacesContext (после удаления параметра электронной почты от подписи placeOrder
«s, конечно):
// Example 3. This works.
<p:commandButton value="Place order" action="#{orderManager.placeOrder()}" >
<f:param name="email" value="#{param['email']}"/>
</p:commandButton>
А вот окончательная тайну, тот, который действительно путает меня, если я используйте следующий фрагмент, я могу получить параметр «email» как из параметра метода , так и FacesContext, но помните, что параметр метода не был извлечен в примере 1!
// Example 4. This works, and BOTH parameters are retrievable!
<p:commandButton value="Place order" action="#{orderManager.placeOrder(param['email'])}" >
<f:param name="email" value="#{param['email']}"/>
</p:commandButton>
Могу ли я передать в неявном объекте JSF EL в качестве параметра метода действия?
И есть ли у вас объяснение, почему он работает в примере 4, но не в примере 1?
Спасибо, BalusC. Ваш ответ имеет смысл, но можете ли вы рассказать мне, как _I_ мог выяснить, в какой фазе происходят эти события? Многие из учебников JSF, которые я прочитал, объясняют _usage_, не объясняя, что происходит _happening_ под абстракцией, что полезно для отладки и понимания. Как вы узнали об этом? – DavidS
Зная HTTP и HTML (и EL) заранее. Выход HTML не содержит подсказки о аргументе метода действия, поэтому он определенно не «передается обратно» через HTML. – BalusC