0

なぜプライムフェイスの部分レンダリングが機能しないのかお聞きしたいと思います。POST リクエストは送信され続けますが、再レンダリングされません。

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <p:messages />
        <h:form>
            <table style="width: 100%">
                <tr>
                    <td><p:outputLabel for="inp1" value="S1" /></td>
                    <td>
                        <p:inputText id="inp1" value="#{form.e.s1}">
                            <p:ajax process="inp1" update="msg1"
                                    event="keyup" />
                        </p:inputText>
                        <p:watermark for="inp1" value="Wpisz S1" />
                        <p:message for="inp1" id="msg1" />
                    </td>
                </tr>
                <tr>

                    <td>Toolbox</td>
                    <td>
                        <p:selectBooleanCheckbox id="inpToolbox" value="#{form.toolbox}">
                            <p:ajax process="inpToolbox" update="toolboxOptions" />
                        </p:selectBooleanCheckbox><br />
                        <p:panel id="toolboxOptions" rendered="#{form.toolbox}">
                            Name: <p:inputText value="#{form.toolboxDescription}" /><br />
                            Number: <p:inputText value="#{form.toolboxNr}" /><br />
                        </p:panel>
                    </td>

                </tr>
            </table>

            <p:commandButton action="#{form.save}" ajax="false"
                             value="Save" />

        </h:form>
    </h:body>
</html>

なぜそれがうまくいかないのか、私にはわかりません。ツールボックスの値を変更するたびに、ツールボックスに関する追加情報フォームを表示したい

4

1 に答える 1

2

ビューの一部を更新したい場合は、DOM に実際に存在する要素の ID を指定する必要があります。ただし、更新しようとしているパネルが常に DOM に存在するとは限りません。form.toolbox が true と評価された場合のみです。false の場合は更新できないため、ビューに追加されません。この問題を解決するためにできることは、パネルを別の要素内にラップし、その要素を更新することです。ラッパー要素が常に存在するため、これは機能します。

したがって、パネルの一部について次のことを試してください。

<h:panelGroup id="toolboxOptions">
    <p:panel id="toolboxOptionsPanel" rendered="#{form.toolbox}">
    ....
    </p:panel>
</h:panelGroup>

詳細な説明については、次の質問の回答をご覧ください: JSF + PrimeFaces: `update` 属性がコンポーネントを更新しません

于 2013-08-24T20:45:51.937 に答える