在表单中创建一个弹出窗口

时间:2017-01-17 10:04:17

标签: forms jsf modalpopup

我想在表单中包含一个弹出窗口。通常的方法是使用以下两种形式:

<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视图中常见的组件

1 个答案:

答案 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