2

我想在表单中包含一个弹出窗口。正常的方法是使用 2 种形式,例如:

<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 中的按钮呈现,即包含弹出窗口的表单“modalId”。

我在“content1”中包含的外部组件中有弹出表单。由于弹出表单在另一个表单内,因此渲染效果不佳。我该如何解决?这个想法是使用我所有的 xhtml 视图都通用的组件

4

1 回答 1

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

于 2017-01-17T10:22:13.607 回答