2017-01-30 16 views
0

これは私の複合コンポーネントのXHTMLの一部ですJSF複合コンポーネントdisabled属性

<my:PartnerSelComp id="partnerSel" value="#{myBean.partner}" service="#{partnerService}" disabled="true"/> 

最初にレンダリングされたコンポーネントはcodeコンポーネントがdisabled="true"かかわらず、編集可能なイベントを表示されます指定された。しかし、最初のAjaxブラーイベントの後(私はupdateだと思います)、正しい無効状態を取得します。バッキングコンポーネントの値を問い合わせるgetAttributes().get("disabled")正しい値が表示されます。それはなぜです?コンポーネントの初期外観を設定するにはどうすればよいですか?


私はそれを修正できました。

@Override 
public void encodeAll(FacesContext context) throws IOException { 

    Boolean b = (Boolean) getAttributes().get("disabled"); 
    partnerCode.setDisabled(b); 
    super.encodeAll(context); 
} 

オリジナルの問題が何かを理解できれば嬉しいです。

答えて

-1

、これを試してみてください

<cc:attribute name="disabled" type="java.lang.String" default="false"/> 

と置き換える:

<span id="#{cc.clientId}" style="white-space:nowrap"> 

<p:panel id="#{cc.clientId}" style="white-space:nowrap"> 
+0

によってこれが解決策だと思う理由を説明できますか? – Kukeltje

+0

cc:属性の場合、ブール値で人生を複雑にする必要はありません。本当の| false stringまたはbooleanは同じです。 p:パネルの場合、p:ajaxを使用しているので、htmlではなくjsfコンポーネントを直接更新する必要があります。 – bilelovitch

+0

複雑であるかどうか、ブール値を使用する**問題**でしょうか? (とdownvoteは私からのものではありませんbtw)。そしてなぜアイデアに「スパン」を与えるのか?私はあなたが間違っていると言っているわけではありません、私は学び、他の人のために詳細な情報を得ようと努力しています。 – Kukeltje

関連する問題