A Converter
is intented to convert from submitted String
request parameter values to complex objects and vice versa in input fields. However, the <f:param>
is pure output only and it will always call toString()
on the value. It doesn't support a Converter
.
Your cleanest and best bet is to create a custom EL function, so that you ultimately end up like:
<f:param name="name" value="#{util:prettyUrl(name)}"/>
Update: the JSF utility library OmniFaces has since version 1.4 (March 2013) a <o:param>
component which extends the <f:param>
with support for a fullworthy JSF converter, exactly like as you'd use in <h:outputText converter>
.
<h:link outcome="/page" value="#{name}">
<o:param name="name" value="#{name}" converter="somePrettyURLConverter" />
</h:link>
See also the showcase.
f:viewParam
is used to retrieve the Object using a converter. So it would be straight forward to use a converter withf:param
too. Since that logic is already implemented in the converter. Now that logic is also present in the view and if i change the param maybe from name to id I have to change the converter and the site. The custom el function would be a workaround, at least if the initial converter would also use it. – Papandreou