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.