我有一个简单的模板,其中定义了两个区域,工具栏和内容。工具栏区域有许多commandButtons,内容包含字段。 我的问题是:如何在两个ui之间使用单个表单:define?
我有示例代码:
<ui:composition template="/WEB-INF/templates/layout.xhtml">
<ui:define name="toolbar">
<p:commandButton id="saveButton" value="Save" ajax="false" action="#{...}" />
</ui:define>
<ui:define name="content">
<h:form id="registerForm">
<p:outputLabel for="name" value="Name"/>
<p:inputText id="name" value="#{...}" required="true" />
<p:message for="name"/>
</h:form>
</ui:define>
</ui:composition>
当触发de saveButton时,应提交h:form registerForm。
有人有建议吗?
答案 0 :(得分:0)
我用ui:decorator解决了这个问题。使用ui:decorator就像一个“subtemplate”可以把表单放在许多ui:define之间。 我希望这可以提供帮助。
<强>模板decorate.xhml 强>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<ui:define name="toolbar"></ui:define>
<ui:define name="content"></ui:define>
</html>
<强> register.xhtml 强>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
<ui:composition template="/WEB-INF/templates/layout.xhtml">
<ui:define name="content">
<h:form id="registerForm">
<ui:decorate template="/WEB-INF/templates/layout-decorator.xhtml">
<ui:define name="toolbar">
<p:commandButton id="saveButton" value="Save" ajax="false" action="#{...}" />
</ui:define>
<ui:define name="form">
<p:outputLabel for="name" value="Name"/>
<p:inputText id="name" value="#{...}" required="true" />
<p:message for="name"/>
</ui:define>
</ui:decorate>
</h:form>
</ui:define>
</ui:composition>
</html>
有关详细信息,请参阅:http://docs.oracle.com/javaee/6/javaserverfaces/2.0/docs/pdldocs/facelets/ui/decorate.html