我想在表单中包含一个弹出窗口。通常的方法是使用以下两种形式:
<div class="wrapper" >
<h:form>
<h:panelGroup id="id1" layout="block">
<ui:include src= content1 />
</h:panelGroup>
</h:form>
</div>
<h:form id="modalId">
<ui:include src= popupContent >
</ui:include>
</h:form>
并使用content1内的按钮进行渲染,形式为&#34; modalId&#34;包含popUp。
我在外部组件中有弹出窗体,其中包含&#34; content1&#34;。由于弹出窗体在另一个窗体内部,因此不能很好地渲染。我该如何解决这个问题?我的想法是使用我所有xhtml视图中常见的组件
答案 0 :(得分:1)
我编写自己的组件的方式是依赖于外部形式的存在。也就是说,我没有在组件中包含任何表单元素。 如果需要引用外部表单元素,那么我只是将from id作为接口的属性之一传递。复合组件对于这类东西非常有用:
<composite:interface>
<composite:attribute name="formId" type="java.lang.String" />
</composite:interface>
<composite:implementation>
<h:commandButton value="button" action="someaction">
<f:ajax execute="#{cc.attrs.formId}" render="#{cc.attrs.formId}" />
</h:commandButton>
</composite:implementation>
然后在外部表单中包含它(假设'comp'是复合组件的命名空间,'modal'是包含组件的文件的名称):
<h:form id="myForm">
<comp:modal formId="myForm"/>
</h:form>
如果您不熟悉它们,请阅读本教程: http://docs.oracle.com/javaee/6/tutorial/doc/giqzr.html