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, love Java and open source stuffs. Follow him on Twitter, or befriend him on Facebook or Google Plus.
Here are some of my recommended Books

Related Posts

Popular Posts