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.