A number of things can cause this. The first, and most obvious would be if you didn't have a "public String showProfile()" method in the backing bean.
The second most common reason would be if you had form inputs that failed to validate, but I don't see any input elements in your example, so in theory that isn't it.
It's often helpful to put a "h:messages" tag with the global option set on the page.
An IDE is no substitute for an Intelligent Developer.
Joined: Dec 08, 2009
I found the solution for this issue.....As I have used the <h:commandLink> inside a <h:dataTable> tag, whenever I click on the link, it tries to check the list variable of my backing bean whether it has the data or not, as my backing bean's scope is request, it couldn't take the list data to subsequent request, hence causing the problem. So the list variable must be initialized in the constructor, so that it can call the backing bean method. It happens when we use the commandLink inside a dataTable or any other looping tag.
This is actually a defect in jsf 1.2, they have fixed it in the jsf 2.0
subject: <h:commandLink> is not able to invoke backing bean method