<f:ajaxrender>が<composite:clientBehavior>経由で機能しない

マークW

私はajaxを持つ複合コンポーネントを持っています:

<composite:interface>
    <composite:attribute name="question" required="true"/>
    <composite:attribute name="value" required="false"/>
    <composite:attribute name="id" required="true" />
    <composite:clientBehavior name="alter" 
        event="change" targets="input"/>
</composite:interface>
<composite:implementation>
    <label for="#{cc.attrs.id}">
        <h:outputText value="#{cc.attrs.question}" />
    </label>
    <div class="fld">      
        <h:selectOneRadio value="#{cc.attrs.value}" id="input">
            <f:selectItem itemValue="true" itemLabel="Yes" />
            <f:selectItem itemValue="false" itemLabel="No" />
        </h:selectOneRadio>
    </div>
</composite:implementation>

この複合コンポーネントをページで次のように使用している場合:

<question:yesNo question="#{myMSG['knowRegQuestion']}" value="#{vehicle.regKnown}" id="is-reg-known">
    <f:ajax event="alter" render="reg-unknown" />
</question:yesNo>
......
<h:panelGroup id="reg-unknown" styleClass="questionGroup man-veh-srch">
    ......
    <h:selectOneListbox value="#{vehicle.model}" size="1" rendered="#{vehicle.regKnown eq 'true'}">
        ......
    </h:selectOneListbox>
</h:panelGroup>

ajaxが起動し、モデルは正しく更新されていますが、レンダリングは変更されていません。(私はさまざまなEL式を試しました)また、Firebugではajax応答が正しく表示されません:

<?xml version='1.0' encoding='UTF-8'?>
<partial-response id="j_id1"><changes><update id="j_id1:javax.faces.ViewState:0"><![CDATA[-2911901889097730230:4227240037100614528]]></update></changes></partial-response>

私は何を逃しましたか?(ありがとう)

BalusC

で指定されている相対クライアントIDは、コンポーネントツリーの<f:ajax render>ClientBehaviorHolderコンポーネントを基準にして解決されます。あなたの特定のケースでは、これは実際には<h:selectOneRadio>です。reg-unknownしたがって、クライアントIDを持つコンポーネント<h:selectOneRadio>は、<cc:implementation>それ自体であると同じ名前付けコンテナーの親で検索されます(複合コンポーネントが実装することはすでにご存知でしょうNamingContainer)。ただし、目的のコンポーネントはそこにありません。

代わりに絶対クライアントIDを指定することをお勧めします(したがって、で始まる:ので、に関連して検索されますUIViewRoot)。これは、2つの一般的な方法で実現できます。

  1. それをハードコーディングします(これがすべてIDのフォーム内にあると仮定しますform):

    <h:form id="form">
        <question:yesNo ...>
            <f:ajax event="alter" render=":form:reg-unknown" />
        </question:yesNo>
        ...
        <h:panelGroup id="reg-unknown" ...>
            ...
        </h:panelGroup>
    </h:form>
    
  2. 参照UIComponent#getClientId()(親ネーミングコンテナのIDが不明な場合):

    <h:form ...>
        <question:yesNo ...>
            <f:ajax event="alter" render=":#{regUnknown.clientId}" />
        </question:yesNo>
        ...
        <h:panelGroup binding="#{regUnknown}" ...>
            ...
        </h:panelGroup>
    </h:form>
    

これは確かに厄介です。これはMojarraの問題1510として報告されたことがありますが、複合コンポーネント自体は複合コンポーネント以外の他のコンポーネントについて何も知らないはずなので、バグとは見なされませんでした(ただし、解決策は理論的には単純です。または<f:ajax render>始まらない場合は、複合コンポーネントの親のクライアントIDをプレフィックスとして付けます)。:@

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数のコンポーネントが同じ「f:ajaxrender」ターゲットをどのようにターゲットにしますか?

分類Dev

cron経由でのメール送信が機能しない

分類Dev

Steam In home SteamingがChromeOSで機能しない(cruton経由)

分類Dev

SteamLAN「In-homesteaming」がChromeOSで機能しない(crouton経由)

分類Dev

AppCache経由で送信されたBinaryFileResponseが機能しない

分類Dev

cURLを使用したFirebase経由での通知の送信が機能しない

分類Dev

IIS経由で公開した後、Response.TransmitFileが機能しない

分類Dev

Wi-Fi経由でWakeon Lan(wol)がMacで機能しない

分類Dev

ESCとBackspaceがVNC経由でWindowsホストのVirtualBoxで機能しない

分類Dev

f-stringがJupyterで機能しない機能しない

分類Dev

シリアル経由でのstdoutの送信が機能しない

分類Dev

SSH経由のRYSNCが制限付きシェルで機能しない

分類Dev

WordPress内の.htaccess経由で301リダイレクトが機能しない

分類Dev

JavaScript経由でメニューを選択:Mozillaでは機能しない( `undefined`)が、Chromeでは機能する

分類Dev

JSF + Weld CDI + WebService(Jetty9経由)が機能しない

分類Dev

'xte mousedown' / '-up' xbindkeys経由が機能しない

分類Dev

https経由のSubversionインポートが機能しない

分類Dev

USB経由のiPhoneテザリングが機能しない

分類Dev

Android経由のHTTPPOST-Javaが機能しない

分類Dev

RDP 経由で接続していない場合、UIAutomation が Windows Server (VPS) で機能しない

分類Dev

Androidがソケット経由で画像を送信できない:「client.getOutputStream()」が機能しない

分類Dev

html が php 経由で送信されたときに「onclick」が機能しないのはなぜですか?

分類Dev

CSS変換(Javascript経由)が複数の関数で機能しないのはなぜですか

分類Dev

ページがAJAX経由でロードされたときにjQueryが機能しない

分類Dev

ノード経由でMongoDBに接続した後、 `find()`が `findOne()`のように機能しない

分類Dev

ノード経由でMongoDBに接続した後、 `find()`が `findOne()`のように機能しない

分類Dev

C#TCP経由でSSLを使用したリクエストの送信が機能しない

分類Dev

FTP経由でWebサイトをアップロードした後、ビデオが機能しない

分類Dev

MacOSでcron経由で実行するとパンダread_csvが機能しない

Related 関連記事

  1. 1

    複数のコンポーネントが同じ「f:ajaxrender」ターゲットをどのようにターゲットにしますか?

  2. 2

    cron経由でのメール送信が機能しない

  3. 3

    Steam In home SteamingがChromeOSで機能しない(cruton経由)

  4. 4

    SteamLAN「In-homesteaming」がChromeOSで機能しない(crouton経由)

  5. 5

    AppCache経由で送信されたBinaryFileResponseが機能しない

  6. 6

    cURLを使用したFirebase経由での通知の送信が機能しない

  7. 7

    IIS経由で公開した後、Response.TransmitFileが機能しない

  8. 8

    Wi-Fi経由でWakeon Lan(wol)がMacで機能しない

  9. 9

    ESCとBackspaceがVNC経由でWindowsホストのVirtualBoxで機能しない

  10. 10

    f-stringがJupyterで機能しない機能しない

  11. 11

    シリアル経由でのstdoutの送信が機能しない

  12. 12

    SSH経由のRYSNCが制限付きシェルで機能しない

  13. 13

    WordPress内の.htaccess経由で301リダイレクトが機能しない

  14. 14

    JavaScript経由でメニューを選択:Mozillaでは機能しない( `undefined`)が、Chromeでは機能する

  15. 15

    JSF + Weld CDI + WebService(Jetty9経由)が機能しない

  16. 16

    'xte mousedown' / '-up' xbindkeys経由が機能しない

  17. 17

    https経由のSubversionインポートが機能しない

  18. 18

    USB経由のiPhoneテザリングが機能しない

  19. 19

    Android経由のHTTPPOST-Javaが機能しない

  20. 20

    RDP 経由で接続していない場合、UIAutomation が Windows Server (VPS) で機能しない

  21. 21

    Androidがソケット経由で画像を送信できない:「client.getOutputStream()」が機能しない

  22. 22

    html が php 経由で送信されたときに「onclick」が機能しないのはなぜですか?

  23. 23

    CSS変換(Javascript経由)が複数の関数で機能しないのはなぜですか

  24. 24

    ページがAJAX経由でロードされたときにjQueryが機能しない

  25. 25

    ノード経由でMongoDBに接続した後、 `find()`が `findOne()`のように機能しない

  26. 26

    ノード経由でMongoDBに接続した後、 `find()`が `findOne()`のように機能しない

  27. 27

    C#TCP経由でSSLを使用したリクエストの送信が機能しない

  28. 28

    FTP経由でWebサイトをアップロードした後、ビデオが機能しない

  29. 29

    MacOSでcron経由で実行するとパンダread_csvが機能しない

ホットタグ

アーカイブ