0

Showcase ソースコードをサポートとして使用して、PrimeFaces 2.2.1 でいくつかのページを作成しています。

同じ構造の Spinner Showcaseとまったく同じページを作成しました。

<h:form prependId="false">
    <p:panel header="Spinners">
        <h:panelGrid id="grid" columns="2" cellpadding="5">
            <h:outputLabel for="spinnerBasic" value="Basic Spinner: " />
            <p:spinner id="spinnerBasic" value="#{spinnerController.number1}" />

            <h:outputLabel for="spinnerStep" value="Step Factor: " />
            <p:spinner id="spinnerStep" value="#{spinnerController.number2}" stepFactor="0.25" />
        </h:panelGrid>
    </p:panel>

    <p:commandButton value="Submit" update="display" oncomplete="dialog.show()" />

    <p:dialog header="Values" widgetVar="dialog">
        <h:panelGrid id="display" columns="2" cellpadding="5">
            <h:outputText value="Value 1: " />
            <h:outputText value="#{spinnerController.number1}" />

            <h:outputText value="Value 2: " />
            <h:outputText value="#{spinnerController.number2}" />
        </h:panelGrid>
    </p:dialog>
</h:form>

次に、パッケージの名前をSpinnerController変更するだけで、ショーケースでそのようなものを作成しましたorg.myproject.view(これは私が使用しているパッケージ名です)。

そしてそれを私のに追加しましたfaces-config.xml:

<managed-bean>
    <managed-bean-name>spinnerController</managed-bean-name>
    <managed-bean-class>org.myproject.view.SpinnerController</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

しかし、[送信] ボタンをクリックすると、ダイアログにすべての値が表示されます0

ブレークポイントを使用すると、 and が実行されていることを確認できますが、getNumber1andgetNumber2は実行setNumber1されsetNumber2ません。スピナーを使用するか、入力フィールドに直接入力して値を変更しようとすると、セッターも実行されません。

Showcase プロジェクトに存在する私のプロジェクトに何が欠けているか知っている人はいますか?

4

1 に答える 1

1

はい、PrimeFaces は実際に頭を火傷することがあります。

PrimeFaces 内の jQuery の問題を解決してくれました。これで、PrimeFaces の問題を解決できると思います。

  • まず、必要はありませんprependId="false"。あなたのdivは、生成時に「j_idt10:display」にすることができます。コマンド ボタンに「表示」を配置するだけで、JSF が最初の部分 (j_idt10) を追加します。
  • 次に、不要な ID を避けます。あなたh:panelGrid id="grid"は他のコントロールによって呼び出されないので、そのIDは必要ありません。

ここで、これらの手順を実行しただけで、コールバックは問題ありません。

于 2011-05-03T19:16:55.027 に答える