Problem

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.

Solution

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 :

jsf2-multiple-faces-config-files

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>
Note
For Struts developer, this is the exact classic problem happened in the Struts configuration file as well.
Tags :
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider making a donation to this charity, thanks.

Related Posts

Popular Posts