0

ajaxリクエスト後にコンテンツが表示されるページを作成しようとしています。ここに私のコードの一部があります:

<h:panelGroup>
        <h:form>
            Retrive object by id: <h:inputText id="myInput" value="#{myManager.id}"/> 
            <h:commandButton value="ok" action="#{myManager.getById}" >
                <f:ajax execute="myInput" render="resultRow" />
            </h:commandButton>
        <h:panelGroup id="resultRow" >
            <br />
            You retrived object which id is:
            <h:outputText value="#{retrivedObject.id}" />
            and its name is:
            <h:outputText value="#{retrivedObject.name}" />
        </h:panelGroup>
        </h:form>
</h:panelGroup>

私の問題は、オブジェクトを取得する前であっても、「取得したオブジェクトのID: 」がレンダリングされることです。コマンドボタンをクリックするまで非表示にしたい。jsf + html だけでできますか (これは ajax で行う必要があります)。必要に応じて JavaScript を使用することもできますが、私は使用しません。

これを解決しようとしましたがrendered="#{!retrivedObject.id==0}"(私のオブジェクトは id 0 を持つことはできません)、これは機能しません - パネル グループがまったくレンダリングされず、ajax リクエストを呼び出すと、「resultRow」ID を見つけることができません。

事前に助けてくれてありがとう。

4

2 に答える 2

0

探しているものと正確に一致しない場合がありますが、いつでも panelGroup を div でラップし、div の可視性を非表示に設定してから、コマンド ボタンをクリックしたときに javascript を使用して可視性を変更できます。

于 2013-12-13T19:51:45.447 に答える
0

rendered次のような属性を使用できます。

<h:panelGroup>
    <h:form>
        Retrive object by id: <h:inputText id="myInput" value="#{myManager.id}"/>
        <h:commandButton value="ok" action="#{myManager.getById}" >
            <f:ajax execute="myInput" render="resultRow" />
        </h:commandButton>
        <h:panelGroup id="resultRow">
            <h:panelGroup rendered="#{retrivedObject ne null}">
                <br />
                You retrived object which id is:
                <h:outputText value="#{retrivedObject.id}" />
                and its name is:
                <h:outputText value="#{retrivedObject.name}" />
            </h:panelGroup>
        </h:panelGroup>
    </h:form>
</h:panelGroup>
于 2013-12-13T19:57:33.840 に答える