In JSF, the faces-config.xml file can used to includes manages beans, navigation rules or any JSF faces configurations. But, putting all the configurations into a single faces-config.xml file will cause this file become huge very fast, and causing a serious maintainability issue.
Actually, you can split the faces-config.xml into multiple smaller files, each group by related settings. For example, group by module, managed beans, navigation rule, faces configurations in different XML files. See figure below :
Then declared all the XML files in javax.faces.CONFIG_FILES initialize parameter, which inside the WEB-INF/web.xml file.
<web-app ...> ... <context-param> <param-name>javax.faces.CONFIG_FILES</param-name> <param-value> WEB-INF/common/manage-beans.xml, WEB-INF/common/navigation-rule.xml, WEB-INF/common/config.xml </param-value> </context-param> ... </web-app>
For Struts developer, this is the exact classic problem happened in the Struts configuration file as well.