The prefix "f" for element "f:param" is not bound
paulaunderwood Dec 10, 2007 12:48 PMI have this page... joborderlist.xhtml
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.com/products/seam/taglib" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.ajax4jsf.org/rich" template="layout/template.xhtml"> <ui:define name="body"> <h:messages globalOnly="true" styleClass="message" id="globalMessages"/> <h:form id="joborderSearch" styleClass="edit"> <rich:simpleTogglePanel label="Job Order Search Parameters" switchType="ajax"> <s:decorate template="layout/display.xhtml"> <ui:define name="label">Title</ui:define> <h:inputText id="title" value="#{joborderList.joborder.title}"/> </s:decorate> <s:decorate template="layout/display.xhtml"> <ui:define name="label">Description</ui:define> <h:inputText id="description" value="#{joborderList.joborder.description}"/> </s:decorate> <div class="actionButtons"> <h:commandButton id="search" value="Search" action="/joborderlist.xhtml"/> </div> </rich:simpleTogglePanel> </h:form> <rich:panel> <f:facet name="header">Job Order Search Results</f:facet> <div class="results" id="joborderList"> <h:outputText value="No job order exists" rendered="#{empty joborderList.resultList}"/> <rich:dataTable id="joborderList" var="joborder" value="#{joborderList.resultList}" rendered="#{not empty joborderList.resultList}"> <h:column> <f:facet name="header"> <s:link styleClass="columnHeader" value="Title #{joborderList.order=='title asc' ? messages.down : ( joborderList.order=='title desc' ? messages.up : '' )}"> <f:param name="order" value="#{joborderList.order=='title asc' ? 'title desc' : 'title asc'}"/> </s:link> </f:facet> #{joborder.title} </h:column> <h:column> <f:facet name="header"> <s:link styleClass="columnHeader" value="Description #{joborderList.order=='description asc' ? messages.down : ( joborderList.order=='description desc' ? messages.up : '' )}"> <f:param name="order" value="#{joborderList.order=='description asc' ? 'description desc' : 'description asc'}"/> </s:link> </f:facet> #{joborder.description} </h:column> <h:column rendered="#{s:hasRole('user') or s:hasRole('admin')}"> <f:facet name="header"> <s:link styleClass="columnHeader" value="NAICS #{joborderList.order=='naics asc' ? messages.down : ( joborderList.order=='naics desc' ? messages.up : '' )}"> <f:param name="order" value="#{joborderList.order=='naics asc' ? 'naics desc' : 'naics asc'}"/> </s:link> </f:facet> #{joborder.naics} </h:column> <h:column rendered="#{s:hasRole('user') or s:hasRole('admin')}"> <f:facet name="header"> <s:link styleClass="columnHeader" value="Opening #{joborderList.order=='opening asc' ? messages.down : ( joborderList.order=='opening desc' ? messages.up : '' )}"> <f:param name="order" value="#{joborderList.order=='opening asc' ? 'opening desc' : 'opening asc'}"/> </s:link> </f:facet> #{joborder.opening} </h:column> <h:column rendered="#{s:hasRole('user') or s:hasRole('admin')}"> <f:facet name="header"> <s:link styleClass="columnHeader" value="RefReq #{joborderList.order=='refreq asc' ? messages.down : ( joborderList.order=='refreq desc' ? messages.up : '' )}"> <f:param name="order" value="#{joborderList.order=='refreq asc' ? 'refreq desc' : 'refreq asc'}"/> </s:link> </f:facet> #{joborder.refreq} </h:column> <h:column> <f:facet name="header"> <s:link styleClass="columnHeader" value="Employer #{joborderList.order=='employer.name asc' ? messages.down : ( joborderList.order=='employer.name desc' ? messages.up : '' )}"> <f:param name="order" value="#{joborderList.order=='employer.name asc' ? 'employer.name desc' : 'employer.name asc'}"/> </s:link> </f:facet> #{joborder.employer.name} </h:column> <h:column rendered="#{s:hasRole('participant')}"> <f:facet name="header"> <s:link styleClass="columnHeader" value="Address #{joborderList.order=='employer.address asc' ? messages.down : ( joborderList.order=='employer.address desc' ? messages.up : '' )}"> <f:param name="order" value="#{joborderList.order=='employer.address asc' ? 'employer.address desc' : 'employer.address asc'}"/> </s:link> </f:facet> #{joborder.employer.address} </h:column> <h:column> <f:facet name="header"> <s:link styleClass="columnHeader" value="Zip Code #{joborderList.order=='zid asc' ? messages.down : ( joborderList.order=='zid desc' ? messages.up : '' )}"> <f:param name="order" value="#{joborderList.order=='zid asc' ? 'zid desc' : 'zid asc'}"/> </s:link> </f:facet> #{joborder.zid} </h:column> <h:column> <f:facet name="header">Action</f:facet> <s:button view="/joborder.xhtml" value="Edit" id="joborder" rendered="#{s:hasRole('user') or s:hasRole('admin')}"> <f:param name="joborderJid" value="#{joborder.jid}"/> </s:button> <s:button id="deleteJoborder" value="Delete" view="/joborderlist.xhtml" action="#{joborderHome.remove}" onclick="if (! window.confirm('Delete #{joborder.description}?')) { return false };" rendered="#{s:hasRole('user') or s:hasRole('admin')}"> <f:param name="joborderJid" value="#{joborder.jid}"/> </s:button> <s:button view="/jobview.xhtml" value="View" id="jobview" rendered="#{s:hasRole('participant')}"> <f:param name="joborderJid" value="#{joborder.jid}"/> </s:button> </h:column> </rich:dataTable> </div> </rich:panel> <div class="tableControl"> <s:link view="/joborderlist.xhtml" rendered="#{joborderList.previousExists}" value="#{messages.left}#{messages.left} First Page" id="firstPage"> <f:param name="firstResult" value="0"/> </s:link> <s:link view="/joborderlist.xhtml" rendered="#{joborderList.previousExists}" value="#{messages.left} Previous Page" id="previousPage"> <f:param name="firstResult" value="#{joborderList.previousFirstResult}"/> </s:link> <s:link view="/joborderlist.xhtml" rendered="#{joborderList.nextExists}" value="Next Page #{messages.right}" id="nextPage"> <f:param name="firstResult" value="#{joborderList.nextFirstResult}"/> </s:link> <s:link view="/joborderlist.xhtml" rendered="#{joborderList.nextExists}" value="Last Page #{messages.right}#{messages.right}" id="lastPage"> <f:param name="firstResult" value="#{joborderList.lastFirstResult}"/> </s:link> </div> </ui:define> </ui:composition>
It works fine when a person who is a user or a admin logs in, but not when a participant is logged in..
The page was display correctly before I created the jobview.xhtml page and its jobview.page.xml, which this button leads to
</s:button> <s:button view="/jobview.xhtml" value="View" id="jobview" rendered="#{s:hasRole('participant')}"> <f:param name="joborderJid" value="#{joborder.jid}"/> </s:button>
After I created those two files.. I get this error when I try to load joborderlist.xhtml logged in as a participant..
org.dom4j.DocumentException: Error on line 7 of document : The prefix "f" for element "f:param" is not bound. Nested exception: The prefix "f" for element "f:param" is not bound.