Vor einigen Tagen habe ich Mojarra zu MyFaces geändert, um this problem zu lösen, jetzt habe ich ein seltsames Problem beim Rendern meiner Composite-Komponenten, sie werden beim zweiten Öffnen einfach nicht gerendert ein Popup (das Popup ist auch eine zusammengesetzte Komponente). JSF 2.0 - MyFaces haben Probleme beim Rendern von CompositeKomponenten
dann ich, klicken Sie in „cancelar“ (Abbrechen) drücken, und das zweite Mal, keiner meiner Composite-Bauteile, ausgenommen:
Das erste Mal, als Sie in Fieldset sehen können, ist alles in Ordnung gemacht der Dialog wiedergegeben wird:
wenn ich log geschaut haben, fand ich diese Nachrichten:
[#|2012-04-10T15:22:00.681-0300|SEVERE|glassfish3.1.1|org.apache.myfaces.renderkit.html.HtmlCompositeComponentRenderer|_ThreadID=19;_ThreadName=Thread-2;|facet UIComponent.COMPOSITE_FACET_NAME not found when rendering composite component prevenda:popupPreVenda:j_id_2uz|#]
[#|2012-04-10T15:22:00.684-0300|SEVERE|glassfish3.1.1|org.apache.myfaces.renderkit.html.HtmlCompositeComponentRenderer|_ThreadID=19;_ThreadName=Thread-2;|facet UIComponent.COMPOSITE_FACET_NAME not found when rendering composite component prevenda:popupPreVenda:inputRazaoSocial|#]
[#|2012-04-10T15:22:00.685-0300|SEVERE|glassfish3.1.1|org.apache.myfaces.renderkit.html.HtmlCompositeComponentRenderer|_ThreadID=19;_ThreadName=Thread-2;|facet UIComponent.COMPOSITE_FACET_NAME not found when rendering composite component prevenda:popupPreVenda:j_id_2vi|#]
[#|2012-04-10T15:22:00.685-0300|SEVERE|glassfish3.1.1|org.apache.myfaces.renderkit.html.HtmlCompositeComponentRenderer|_ThreadID=19;_ThreadName=Thread-2;|facet UIComponent.COMPOSITE_FACET_NAME not found when rendering composite component prevenda:popupPreVenda:j_id_2vn|#]
[#|2012-04-10T15:22:00.686-0300|SEVERE|glassfish3.1.1|org.apache.myfaces.renderkit.html.HtmlCompositeComponentRenderer|_ThreadID=19;_ThreadName=Thread-2;|facet UIComponent.COMPOSITE_FACET_NAME not found when rendering composite component prevenda:popupPreVenda:j_id_2vs|#]
wie Sie sehen können, ist das Problem, dass myfaces nicht eine Facette finden in Verbundbauteil ... Die einzige Verbundkomponente, die Facetten verwendet, ist hrgi:: Pop-up
<c:interface>
<c:attribute name="titulo" default="sem titulo" required="false"/>
<c:attribute name="renderizar" default="false" required="false"/>
<c:attribute name="modal" default="true" required="false"/>
<c:attribute name="bordaConteudo" default="true" required="false"/>
<c:facet name="cabecalho" required="false"/>
<c:facet name="conteudo" required="true"/>
<c:facet name="botoes" required="true"/>
</c:interface>
<c:implementation>
<h:outputStylesheet library="css" name="hrgiPopup.css" target="head"/>
<h:outputStylesheet library="css" name="clearfix.css" target="head"/>
<h:outputScript library="js" name="hrgiPopup.js" target="head"/>
<h:panelGroup layout="block" rendered="#{cc.attrs.renderizar}"
class="hrgi-dialog-panel clearfix">
<h:panelGroup layout="block" class="hrgi-dialog-overlay clearfix" rendered="#{cc.attrs.modal}"></h:panelGroup>
<h:panelGroup id="popup" layout="block" class="hrgi-dialog-box clearfix">
<h:panelGroup layout="block" class="hrgi-dialog-title clearfix">
<h:outputText style="float:left" value="#{cc.attrs.titulo}"/>
</h:panelGroup>
<h:panelGroup layout="block" class="hrgi-dialog-content clearfix">
<c:renderFacet name="cabecalho" required="false"/>
<h:panelGroup layout="block" class="hrgi-dialog-background clearfix"
rendered="#{cc.attrs.bordaConteudo}">
<c:renderFacet name="conteudo" required="true"/>
</h:panelGroup>
<h:panelGroup layout="block" class="clearfix" rendered="#{not cc.attrs.bordaConteudo}">
<c:renderFacet name="conteudo" required="true"/>
</h:panelGroup>
<c:renderFacet name="botoes" required="true"/>
<script type="text/javascript">
cercarEventoTab("#{cc.clientId}:popup");
</script>
</h:panelGroup>
</h:panelGroup>
</h:panelGroup>
</c:implementation>
Ist das ein Fehler von MyFaces ?? Mojarra zeigt so kein Problem!
AKTUALISIERT
Das Problem tritt nur, wenn der Benutzer klickt "cancelar" Taste ... Die Aktion Aufruf dieser Code die Felder zu löschen und schließen Sie den Dialog:
public void cancelar(ActionEvent evento){
fechar();
UIComponent componente=evento.getComponent().getParent().getParent().getParent();
componente.getFacet("conteudo").getChildren().clear();
}
dieser Code angepasst wurde Von den Ansätzen können Sie here sehen. In diesem Fall werden nur Komponenten innerhalb des Facettenkontextes neu erstellt. Funktioniert gut, außer mit meinen Composite-Komponenten.
die Web-Config nicht geholfen haben, verursachen möglicherweise die Erklärung Verbundbauteil Tag scheint nicht falsch zu sein: xmlns: hrgi = "ht tp: //java.sun.com/jsf/composite/hrgi ". Ich habe neue Informationen hinzugefügt. Vielen Dank für Ihre Aufmerksamkeit. – brevleq
Ich habe "componente.getFacet (" conteudo ") angepasst. GetChildren(). Clear();" Von der zweiten Annäherung können Sie hier sehen: https://cwiki.apache.org/MYFACES/clear-input-components.html. Gibt es eine andere Möglichkeit, alle Komponenten der Seite ohne Probleme in meinen Composite-Komponenten zu löschen? – brevleq