2017-01-17 2 views
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», который содержит Popup.

У меня есть всплывающая форма во внешнем компоненте, который включен в «content1». Из-за того, что всплывающая форма находится внутри другой формы, она не отображается хорошо. Как я могу это исправить? Идея состоит в том, чтобы использовать этот компонент, который является общим для всех моих представлений xhtml.

+0

Вложенные формы не допускаются в HTML. Не проблема jsf, а общий html-один – Kukeltje

ответ

1

То, как я писал свои собственные компоненты, заключалось в том, чтобы полагаться на существование внешней формы. То есть, я не включал элементы формы внутри компонента. Если возникла необходимость ссылаться на внешний элемент формы, я бы просто передал из 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> 

Затем вы включаете, что в вашем внешнем виде (предполагая, что «Комп» является ваше пространство имен для составных компонентов и «модальный» это имя файла, содержащего компонент):

<h:form id="myForm"> 
    <comp:modal formId="myForm"/> 
</h:form> 

Пройтись данного руководства, если вы не знакомы с ними: http://docs.oracle.com/javaee/6/tutorial/doc/giqzr.html

Смежные вопросы