Почему мои контроллеры контроллера не работают в моем проекте PrimeFaces? - PullRequest
0 голосов
/ 02 мая 2011

Я создаю несколько страниц с помощью PrimeFaces 2.2.1, используя в качестве поддержки исходный код Showcase.

Я создал страницу в точности как 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>

Но когда я нажимаю кнопку Submit , в диалоге 1019 * отображаются все значения с 0.

Используя точки останова, я вижу, что мои getNumber1 и getNumber2 работают, но setNumber1 и setNumber2 никогда не запускаются. Я могу попытаться изменить значения, используя счетчики или непосредственно введя поле ввода, сеттеры также не запускаются.

Кто-нибудь знает, что мне не хватает в моем проекте, который существует в проекте Showcase?

1 Ответ

1 голос
/ 03 мая 2011

Да, PrimeFaces действительно иногда вызывает ожоги головы.

Что ж, вы помогли мне с моей проблемой jQuery в PrimeFaces.Теперь я думаю, что могу помочь вам с вашей проблемой PrimeFaces:

  • Во-первых, вам не нужно prependId="false".Ваш div может быть "j_idt10: дисплей", когда генерируется.Вам просто нужно поставить «дисплей» на командную кнопку, а JSF позаботится о добавлении первой части (j_idt10).
  • Во-вторых, избегайте ненужных идентификаторов.Ваш h:panelGrid id="grid" не вызывается никаким другим элементом управления, поэтому ему не нужен этот идентификатор.

Здесь я только что сделал эти шаги, и обратный вызов в порядке.

...