i want to change the variable value based on a condition
so i tried the following:
<h:head>
<ui:param name="userCase" value="Insert" />
<ui:fragment rendered="#{employee.employeesBulkInsert==false}">
<ui:param name="userCase" value="Update" />
</ui:fragment>
<title>#{userCase} Employee </title>
</h:head>
but it doesn’t work in the update case, it shows an empty string, any ideas why ?
i know that there are other solutions like defining the variable in the backing bean, or make the conditional ui fragment on the title tag directly, but i want to know why the above is not working, please advise, thanks.
The
<ui:fragment>is a render-time tag while the<ui:param>is a tag handler (tag handlers are easily recognizeable by the absence of therenderedattribute). So when the view get built, the<ui:param>is set, regardless of the outcome of<ui:fragment>. Therenderedattribute of<ui:fragment>is only evaluated when the already-built view is to be rendered.You want to make the condition using a tag handler instead, such as JSTL
<c:if>.(note that I removed the unnecessary boolean
==falsecomparison)