After the wireframes are complete, the customer and the development team usually sits down to work up the use cases. The use cases represent a drilling down into the particulars of the requirements. Normally, use cases start with the initial state at which the application is encountered by a visitor, and then proceed to follow every possible path that could be taken, asking what could go wrong (error conditions) and what actions must be taken.
This exercise is especially critical with Struts because the list of possible jumping points from a given page represents the possible targets of the action bean. But, as with everything, it’s not required to get absolutely everything right on the first pass.