JSF Action Listener - двойное поведение - PullRequest
1 голос
/ 06 декабря 2011

Я использую версию Apache MyFaces JSF и испытываю странное поведение с прослушивателем действий.

Когда я использую глобальный action-listener, как это:

 <application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
  <el-resolver id="msgSrcResolver">com.personal.framework.utils.FacesELResolver</el-resolver>
  <message-bundle>resources.errors</message-bundle>
  <action-listener>com.personal.framework.listeners.MyActionListener</action-listener>
 </application>

JSF работали хорошо. Метод MyActionListener.processAction (..) работал, вызывая метод action, указанный в CommandButton. К сожалению, мы не можем использовать это из-за некоторых конфликтов, возникающих в приложении на основе Spring WebFlow в том же проекте.

Чтобы это исправить, я попытался добавить прослушиватель действий непосредственно к CommandButton, например так:

<h:commandButton id="continue" forceId="true"
image="continue.gif"
action="#{depositBean.postProcess}"
value="Continue"> 
<f:actionListener type="com.personal.framework.listeners.MyActionListener" > </f:actionListener>
</h:commandButton>

Этот метод использования ActionListener не работает должным образом - он будет вызывать от depositBean.postProcess до MyActionListener, как я хочу, но затем depositBean.postProcess вызывается снова, вне MyActionListeren.

Как я могу использовать ActionListener в CommandButton, не называя Action во второй раз, сам по себе (так же, как при использовании глобального ActionListener)?

Примечание - мы используем ActionListener для обработки ошибок валидации, поэтому все методы Action должны вызываться через ActionListener.

...