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在 Showcase 中创建了一个和那个完全一样的包,只是将包重命名为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.

使用断点,我可以看到我的getNumber1and正在运行,getNumber2但从未运行。我可以尝试使用微调器或直接键入输入字段来更改值,设置器也不会运行。setNumber1setNumber2

有谁知道我在 Showcase 项目中存在的项目中缺少什么?

4

1 回答 1

1

是的,PrimeFaces 有时确实会让人头疼。

好吧,你帮我解决了 PrimeFaces 中的 jQuery 问题。现在我想我可以帮你解决 PrimeFaces 问题:

  • 首先,您不需要prependId="false". 生成时,您的 div 可以是“j_idt10:display”。您只需将“显示”放在命令按钮上,JSF 会负责添加第一部分 (j_idt10)。
  • 其次,避免不必要的 id。您h:panelGrid id="grid"没有被任何其他控件调用,因此它不需要该 ID。

这里我只是做了这些步骤,回调就ok了。

于 2011-05-03T19:16:55.027 回答