いくつかの日前にmojarraをmyfacesに変更してthis problemを解決しました。複合コンポーネントのレンダリングに奇妙な問題があります。 1つのポップアップ(ポップアップも複合コンポーネントです)。あなたはすべてがOKにレンダリングされ、フィールドセットで見ることができるようJSF 2.0 - 複合コンポーネントのレンダリングに問題がある
初めて、:
、私は除いて、「CANCELAR」(キャンセル)ボタン、2回目、私の複合コンポーネントのどれを中クリックダイアログが、レンダリングされる:
私は、ログ見てきたとき、私はこれらのメッセージを見つけました:
[#|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|#]
あなたが見ることができるように、問題はMyFacesのファセットを見つけることができないということです複合コンポーネントで...ファセットを使用しています 唯一の複合コンポーネントはhrgiです:ポップアップ:
<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>
これはMyFacesののバグです? Mojarraはこのような問題は何も表示していません!
public void cancelar(ActionEvent evento){
fechar();
UIComponent componente=evento.getComponent().getParent().getParent().getParent();
componente.getFacet("conteudo").getChildren().clear();
}
このコードが適応されました:問題は、単にユーザが「CANCELAR」ボタンをクリックしたときに...アクション呼び出しこのコードフィールドをクリアし、ダイアログを閉じるに起こる
を更新し
あなたが見ることができるアプローチからhere。この場合、ファセット内のコンポーネントだけが再作成されます。私の複合コンポーネントを除いて正常に動作します。
ウェブ設定が役に立たなかったため、複合コンポーネントタグの宣言が間違っているとは限りません。xmlns:hrgi = "ht tp://java.sun.com/jsf/composite/hrgi "を参照してください。新しい情報を追加しました。あなたの注意をお寄せいただきありがとうございます。 – brevleq
私は、 "componente.getFacet(" conteudo ")。getChildren()。clear();" 2番目のアプローチからは、https://cwiki.apache.org/MYFACES/clear-input-components.htmlをご覧ください。私のコンポジットコンポーネントで問題のないページのすべてのコンポーネントをクリアできる別の方法はありますか? – brevleq