You can have templates in your JSF pages. First create a template as such. Note the ui namespace and the ui:insert placeholders:
From template <br />
<ui:insert name="left">Will be replaced</ui:insert> | <ui:insert name="right">Will be replaced</ui:insert>
We've also put a ui:debug in this template. In the resulting file, we can press ctl shift d for popup debugging information.
Now again in another file, we can use this template within the ui namespace, decorate in this case. You can also use composition, but that will delete anything not involved in the template from the page. We use ui:define to declare the data for the ui:insert tags above.
<ui:decorate template ="templ.xhtml">
You see the composite namespace, and interface tag that defines the parameters passed to this, and the implementation tag that uses such in as cc.attrs.thevalue. (cc standards for composite and attrs the... attributes).
Now in your calling file, add the namespace. Note the mycomp directory relating to your directory after web/resources.
You're saying your resource bundle is called things.properities in the root your your classes directory, and you can access it in your JSF page via 'bundle'. We're saying we support both english and french.
Now create that things.properties file. I'm putting it in my resources/ folder. You need to make sure this ends up in the root of your classes directory.
In your jsf page you can access it via:
If you have a things_fr.properties file, and your browser is set to French, it will use the french version for the resources bundle.
We can reference resource we put in a 'resources' directory in the main 'web' or 'webapp' directory of your project. The css include below is in the subdirectory 'css', and the image is in the subdirectory images.