Don't repeat your code - how to?
bobgee Mar 9, 2009 4:06 PMIn my view pages I have very similar code which differs only in one string an one session bean name. Currently it's about the page navigation html for a resultset - yet I'm interested in a common approach.
I ask myself how I could evacuate that xhtml code in an include file and passing the differing parts as parameters.
Current code within a PrinterList.xhtml:
<div class="tableControl">
<s:link view="/PrinterList.xhtml"
rendered="#{printerList.previousExists}"
id="firstPage">
<h:graphicImage value="#{messages.imgPageFirst}"/>
<f:param name="firstResult" value="0"/>
</s:link>
<s:link view="/PrinterList.xhtml"
rendered="#{printerList.previousExists}"
id="previousPage">
<h:graphicImage value="#{messages.imgPagePrevious}"/>
<f:param name="firstResult"
value="#{printerList.previousFirstResult}"/>
</s:link>
<s:link view="/PrinterList.xhtml"
rendered="#{printerList.nextExists}"
id="nextPage">
<h:graphicImage value="#{messages.imgPageNext}"/>
<f:param name="firstResult"
value="#{printerList.nextFirstResult}"/>
</s:link>
<s:link view="/PrinterList.xhtml"
rendered="#{printerList.nextExists}"
id="lastPage">
<h:graphicImage value="#{messages.imgPageLast}"/>
<f:param name="firstResult"
value="#{printerList.lastFirstResult}"/>
</s:link>
</div>Basic idea is to move that into an include file and pass the name of the view page (here: PrinterList) and the name of the list bean (here: printerList):
<ui:include src="/layout/tablePaging.xhtml">
<ui:param name="view" value="PrinterList" />
<ui:param name="listBean" value="#{printerList}" />
</ui:include>
The main questions:
How do I pass the listBean and how do I specify the EL expression for the listBean in the includeded file?
(listBean.nextExists, listBean.nextFirstResult etc. - how to convert from name to entity?)
- and: is there a more elegant way (maybe putting variable into page scope)?
Everything well to understand?
Thanks!
Robert