tags:

views:

48

answers:

2

This is my Phase Listener

public class AdminPhaseListener implements PhaseListener {

private static final long serialVersionUID = -1161541721597667238L;

public void afterPhase(PhaseEvent e) {
    System.out.println("after Phase " + e.getPhaseId());
}

public void beforePhase(PhaseEvent e) {
    System.out.println("before Phase " + e.getPhaseId());
    if(e.getPhaseId()== PhaseId.RESTORE_VIEW)
    {

    }

}

public PhaseId getPhaseId() {
    return PhaseId.ANY_PHASE;
}}

On click of a Command Button in my page, i call an action method and do some processing but the action method is not called at all, but in the server log , i could see the messages printed by my PhaseListener for all the Phases.

If my view was not changed, It would have stopped after the RESTORE_VIEW Phase right?

any thoughts?

Adding the code for How I display the Command Button :

<table width="100%">
            <h:column rendered="#{adminBean.displayResultsSize > 0}">

                <tr>
                    <td colspan="14" height="5" nowrap="nowrap" class="WhiteRow"></td>
                </tr>
                <tr>
                    <td colspan="14" height="1" nowrap="nowrap" align="center"
                        bgcolor="#999999"></td>

                </tr>
                <h:inputHidden  id="removeUserId" value="#{adminBean.removeUserId}"/>
                <h:inputHidden  id="removeIBD" value="#{adminBean.removeIBD}"/>
                <h:inputHidden  id="removeAPA" value="#{adminBean.removeAPA}"/>
                <tr>
                    <td colspan="14" height="30" nowrap="nowrap"
                        class="FilterColumnGrayHeader" align="center">&nbsp;&nbsp;&nbsp;
                    <input type="button" disabled="disabled" id="button_edit"
                        value="Edit Details" class="disabledfield"
                        onclick="populateEditRow();">
                    </input> <h:commandButton type="submit" class="disabledfield" immediate="true"
                        id="button_remove" value="Remove" onclick="populateRemoveRow();" action="#{adminBean.remove}">
                    </h:commandButton> &#160;

                    </td>
                </tr>
                <tr bgcolor="#000000">
                    <td colspan="14" height="1" nowrap="nowrap" align="center"
                        bgcolor="#999999"></td>
                </tr>
                <tr>
                    <td height="10"></td>
                </tr>
            </h:column>
        </table>
+1  A: 

This generally means that there are validation errors on the page. Try setting immediate="true" to overcome the errors, or use <h:messages> to show the errors that arose.

Bozho
+1  A: 

I'm citing from this answer:

Whenever an UICommand component fails to invoke the associated action, verify the following:

  1. UICommand components must be placed inside an UIForm component (e.g. h:form).
  2. You cannot nest multiple UIForm components in each other (watch out with include files!).
  3. No validation/conversion error should have been occurred (use h:messages to get them all).
  4. If UICommand components are placed inside an UIData component, ensure that exactly the same DataModel (the object behind the UIData's value attribute) is preserved.
  5. The rendered and disabled attributes of the component and all of the parent components should not evaluate to false during apply request values phase.
  6. Be sure that no PhaseListener or any EventListener in the request-response chain has changed the JSF lifecycle to skip the invoke action phase.
  7. Be sure that no Filter or Servlet in the same request-response chain has blocked the request fo the FacesServlet somehow.

Another cause can be that you're not running the code you think you're running.

BalusC
I think , My problem may be due to the above point 4. I have added the code for how I display the command button. Can you please check and comment on How to retain the UIData value or any other suggestions?
gurupriyan.e
hmmm.. the problem was due to the 5th cause.Now it is called. Thanks.
gurupriyan.e