Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to conditionally include a file in my template using JSF and Facelets?

So, my template includes a footer.xhtml

<ui:include src="/WEB-INF/testtaker/Footer.xhtml"/>

What I want to do is change the footer based on some users pref to different Footer_???.xhtml file.

So, I'd like to do something like this:

<ui:include src="/WEB-INF/testtaker/Footer_001.xhtml">
      Content from original Footer.xhtml
</ui:include>

and if Footer_001.xhtml doesn't exist, then let it use the content between the tags, otherwise use the content from the file.

I know this seems a little odd, but this will solve a huge problem of customizing my existing site with out having to make changes to includes all over the place. Plus I'm not sure the file will exist before hand or not.

Any thoughts?

like image 729
David G Avatar asked Jan 20 '12 20:01

David G


1 Answers

You can use EL in <ui:include src>.

<ui:include src="/WEB-INF/testtaker/Footer#{user.prefs.footerId}.xhtml" />

If #{user.prefs.footerId} returns null or an empty string, it'll become just Footer.xhtml.

like image 109
BalusC Avatar answered Oct 15 '22 00:10

BalusC