Я использую Primefaces 3.4.2 с JSF2.1. Я создал страницу, разделенную на несколько единиц макета. В правом блоке макета у меня есть аккордеонная панель и создано динамическое меню, а средний центральный макет состоит из ui: include, и страница загружается в слой. Когда я нажимаю на ссылку, открывается диалоговое окно, которое включает динамическую страницу. После открытия и закрытия диалогового окна без выполнения каких-либо действий в правом макете средний центральный макет больше не работает. Я вижу это, но нажимаю на вводимый текст Я не могу ничего ввести в него, также нажимаю другие компоненты, ничего не происходит !!! в чем проблема? Есть ли решение?
При нажатии элементов меню открывается диалоговое окно, включающее другую страницу, и при изменении макета центра узла дерева, открываемая в диалоговом окне страница работает хорошо, но при закрытии диалогового окна центральные кнопки макета и входы не работают, другие компоненты макета работают хорошо!
Мой новый код:
<p:layoutUnit id="right" position="east" size="145" style="text-align:center;direction: ltr!important;padding: 0px!important;">
<h:form prependId="false">
<script type="text/javascript">
function test(id,url,title){
document.getElementById('h1').value=id;
document.getElementById('h2').value=url;
document.getElementById('h3').value=title;
salamm.jq.click();
}
</script>
<h:inputHidden id="h1" value="#{adminC.nclose}" />
<h:inputHidden id="h2" value="#{adminC.nurl}"/>
<h:inputHidden id="h3" value="#{adminC.ntitle}"/>
<p:commandButton actionListener="#{adminC.addTab()}" id="salam" widgetVar="salamm" update=":dlgpanel" onstart="waitDialogmain.show()" style="display: none" oncomplete="waitDialogmain.hide();dlg1.show()"/>
<p:accordionPanel style="text-align: center;font-family: tahoma!important" activeIndex="#{menuGen.activeIndex}">
<p:tab title="connections" id="t0" rendered="#{menuGen.menuList1.length()>0}" >
<center>
<h:outputText escape="false" value="#{menuGen.menuList1}"/>
</center>
<br/>
</p:tab>
<p:tab title="manage" id="t1" rendered="#{menuGen.menuList2.length()>0}" >
<center>
<h:outputText value="#{menuGen.menuList2}" escape="false"/>
</center>
<br/>
</p:tab>
</p:accordionPanel>
</h:form>
</p:layoutUnit>
<p:layoutUnit id="center" style="padding: 0px!important;" position="center">
<p:layout widgetVar="mkh">
<p:layoutUnit id="middleright" position="east" size="170" collapsible="true" style="padding: 0px;direction: ltr" >
<h:form prependId="false">
<p:tree value="#{treeC.root}" var="node" dynamic="true" style="width: 165px;border: none;direction: rtl!important;text-align: right;font-family: tahoma;font-weight: bold" selectionMode="single" selection="#{treeC.selectedNode}">
<p:ajax event="select" listener="#{treeC.onNodeSelect}" onstart="waitDialogmain.show()" oncomplete="waitDialogmain.hide()" />
<p:treeNode >
<h:outputText value="#{node}"/>
</p:treeNode>
</p:tree>
<p:commandButton onclick="mkh.toggle('east')" icon="ui-icon-triangle-1-e" title="ctr+shift+right arrow" style="width: 6px;height: 80px;position: absolute;top: 50%;" type="button"/>
</h:form>
</p:layoutUnit>
<p:layoutUnit id="middlecenter" style="padding: 0px!important;" position="center">
<p:layout style="text-align: center">
<p:layoutUnit id="middlecenter1" style="padding: 0px!important;" position="center" resizable="true" >
<p:outputPanel autoUpdate="true" id="dlgpanelcenter">
<center>
<ui:include src="./../users/networkReport.xhtml" />
</center>
</p:outputPanel>
</p:layoutUnit>
<p:layoutUnit id="middleBottom" size="100" style=" padding: 0px!important" position="south" resizable="true" >
</p:layoutUnit>
</p:layout>
</p:layoutUnit>
</p:layout>
</p:layoutUnit>
</p:layout>
<p:dialog id="dlg" resizable="false" maximizable="true" modal="true" draggable="true" height="400" widgetVar="dlg1" style="background-color: white!important;text-align: center!important;direction: ltr">
<p:outputPanel style="direction: rtl" id="dlgpanel" >
<center>
<ui:include src="#{adminC.url}" />
</center>
</p:outputPanel>
</p:dialog>
</h:body>
</f:view>
</html>
И это одна страница, которая открывается внутри диалога:
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
template="./../template/masterTemplate.xhtml"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:sec="http://www.springframework.org/security/tags">
<ui:define name="top">
</ui:define>
<ui:define name="content">
<h:form id="regChannel" prependId="false" style="text-align: right;float: none!important">
........
</h:form>
</ui:define>
<ui:define name="bottom">
</ui:define>
1 ответ
Избавьтесь от всех вложенных форм (<h:form
),
Я заметил, что у тебя их много
На странице не может быть следующей структуры
<h:form.....
some elements....
some elements....
some elements....
<h:form....
Например, вы можете разместить один <h:form
, который будет обертывать <p:tab
Или поместите <h:form
внутри каждого <p:tab
Другой способ проверить, что у вас нет вложенных <h:form
- это выполнить просмотреть исходный код на своей странице и посмотреть, есть ли у вас <form
внутри <form
(вложенные формы что баааад)
Обновить
Вы уверены, что вам нужны все эти <ui:define
в диалоге? попробуйте удалить все <ui:define
+ template="./../template/masterTemplate.xhtml"
изнутри ui:composition
и просто оставьте
<ui:composition....
<h:form...
</h:form>
</ui:composition>
h:form
внутри <p:dialog
, а не наоборот ... stackoverflow.com/ a / 14051661/617373
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.
<ui:define
в диалоге? попробуйте удалить все<ui:define
+template="./../template/masterTemplate.xhtml"
изнутриui:composition
и просто оставьте<ui:composition....<h:form...</h:form></ui:composition>