我有一个模板,其中定义了<h:form>
。这个<h:form>
在整个应用程序中用于实体的CRUD页面。
因此,在一个地方我需要另一个enctype
表单,以便我可以上传文件。我想我可以用模板中的一个方面解决这个问题:
<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>
在具体页面上,我想以这种方式设置自定义enctype
:
<ui:define name="form-enctype">
<h:outputText value="multipart/form-data"/>
</ui:define>
但是在源代码中,我总是将application/x-www-form-urlencoded
enctype
作为<h:form>
为什么会这样?在源代码中的其他位置,这表现得很好。
答案 0 :(得分:2)
h:form的参考页面未提及enctype
方面。我不认为它是h:form
的有效方面。但是,有属性enctype
。
如果要在特定页面中定义表单的内容类型,请使用如下所示的模板参数。
模板看起来就是:
<h:form id="main-form" enctype="#{myenctype}">
<ui:insert name="buttons"/><p/>
<ui:insert name="content"/><p/>
<ui:insert name="buttons"/>
<ui:insert name="additionalHelper"/>
</h:form>
并且特定页面必须定义<ui:param name="myenctype" value="multipart/form-data"/>
:
<ui:composition template="template.xhtml">
<ui:param name="myenctype" value="multipart/form-data"/>
<!-- other stuff like <ui:define ...> -->
</ui:composition>
如果您想为参数使用三元运算符提供默认值,如this question中所述。