0

<c:forEach>イテレータ内のiframeの更新に問題があります。

<h:form>
    <p:outputPanel rendered="#{dd.render()}">
        <p:tabView dynamic="true">
        <c:forEach var="aba" items="#{dd.abas}">
        <p:tab title="#{aba.orelha}" >
        <h2>
            <h:outputText value="#{aba.titulo}" />
            <p:selectOneMenu style="width:250px;  float:right;" value="#{aba.ln}" rendered="#{aba.selecaoAtiva}">
            <f:selectItems value="#{aba.itens}" />
             <p:ajax update="WHAT SHOULD GO HERE???" event="change" />
        </p:selectOneMenu>
        </h2>
            <f:view>
                <iframe src="very-Boring-And-Long-E.L.-Built-URL" width="#{dd.largura}" frameborder="0" height="#{dd.altura}" />
            </f:view>
            </p:tab>
        </c:forEach>
        </p:tabView>
    </p:outputPanel>
</h:form>

ユーザーがで何かを選択したときに、iframeのコンテンツのみを更新したい<p:selectOneMenu>。元のコードは@formajaxタグにあり、フォーム全体を更新して、ユーザーを1番目のタブに戻していました。

アクティブなタブをいじらずにajaxでiframeを更新するにはどうすればよいですか?

4

3 に答える 3

0

使用する

<p:ajax process="@this" event="change" update="myIframe" /> 

myIframeフレームのIDとしても設定されます。<ui:repeat />また、の代わりに使用することをお勧めしますc:forEach。ビューが壊れる場合があります。この質問を参照してください

于 2013-01-03T11:36:39.283 に答える
0

この回答は、特に私のケースに関連しすぎている可能性がありますが、意図したとおりに機能させるために私が思いついた解決策です。

誰かがよりエレガントな答えを出すことができれば、その答えが受け入れられます。
その間...


<p:tab>タブが互いに干渉する必要がないため、フォーム タグを に移動します。

ajax の更新を にすると@form、機能します。

<p:outputPanel rendered="#{dd.render()}">
<p:tabView dynamic="true">
    <c:forEach var="aba" items="#{dd.abas}">
        <p:tab title="#{aba.orelha}" >
            <h:form>
                <h2>
                    <h:outputText value="#{aba.titulo}" />
                    <p:selectOneMenu style="width:250px;  float:right;" value="#{aba.ln}" rendered="#{aba.selecaoAtiva}">
                        <f:selectItems value="#{aba.itens}" />
                         <p:ajax update="@form" event="change" />
                </p:selectOneMenu>
                </h2>
                <f:view>
                    <iframe src="very-Boring-And-Long-E.L.-Built-URL" width="#{dd.largura}" frameborder="0" height="#{dd.altura}" />
                </f:view>
            </h:form>
        </p:tab>
    </c:forEach>
</p:tabView>
</p:outputPanel>
于 2013-01-03T13:13:47.707 に答える