I have a template, in which a <h:form>
is defined. This <h:form>
is used all over the application for the CRUD pages of entities.
So, at one place I need another enctype
for the form, so that I can upload files. I thought I can solve this with a facet in the template:
<h:form id="main-form">
<f:facet name="enctype">
<ui:insert name="form-enctype"/>
</f:facet>
<ui:insert name="buttons"/><p/>
<ui:insert name="content"/><p/>
<ui:insert name="buttons"/>
<ui:insert name="additionalHelper"/>
</h:form>
And at the concrete page I wanted to set the custom enctype
this way:
<ui:define name="form-enctype">
<h:outputText value="multipart/form-data"/>
</ui:define>
But in the source code I always end up with the default application/x-www-form-urlencoded
as enctype
for the <h:form>
Why is this happening? At other locations in the source code this is behaving properly.
The reference pages for h:form does not mention
enctype
facet. I don't think it is valid facet forh:form
. However, there is attributeenctype
.If you want to define content type of the form in specific pages then use template parameters like shown below.
Template would look then:
and specific page has to define
<ui:param name="myenctype" value="multipart/form-data"/>
:If you want to provide default value for the parameter use ternary operator like described in this question.