This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Normally, I'd say that it's because you have ".xhtml" in your navigation string. But I think you previously said you are set up to accept ".xhtml" as a JSF URL extension. I still have misgivings about that, however.
Most likely your problem is because you are attempting to parameterise the navigation URL. You cannot do that. Action methods can only return simple navigation IDs or URLs without parameters.
A better approach would be to inject the backing bean for topicPage into the action method's backing bean as a managed property and use its "setTopicId" method to inject the topic directly into the target backing bean.
An IDE is no substitute for an Intelligent Developer.