Java 为什么我的控制器设置程序不是';你不在我的PrimeFaces项目工作吗?
我正在使用Showcase源代码作为支持,使用PrimeFaces 2.2.1创建一些页面Java 为什么我的控制器设置程序不是';你不在我的PrimeFaces项目工作吗?,java,controller,jsf-2,primefaces,managed-bean,Java,Controller,Jsf 2,Primefaces,Managed Bean,我正在使用Showcase源代码作为支持,使用PrimeFaces 2.2.1创建一些页面 <h:form prependId="false"> <p:panel header="Spinners"> <h:panelGrid id="grid" columns="2" cellpadding="5"> <h:outputLabel for="spinnerBasic" value="Basic Spinn
<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>
我创建了一个完全相同的页面,具有相同的结构:
<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>
但是,当我单击Submit按钮时,对话框会显示所有带有0
的值
<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>
使用断点,我可以看到我的getNumber1
和getNumber2
正在运行,但是setNumber1
和setNumber2
从未运行过。我可以尝试使用微调器或直接键入输入字段来更改值,设置器也不会运行
<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>
有人知道我在Showcase项目中缺少了什么吗?是的,PrimeFaces有时真的会烫头
<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>
你帮我解决了jQuery的问题。现在我想我可以帮你解决你的问题:
<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>
- 首先,您不需要
。生成div时,您的div可以是“j_idt10:display”。您只需要将“display”放在命令按钮上,JSF将负责添加第一部分(j_idt10)prependId=“false”
- 第二,避免不必要的ID。您的
没有被任何其他控件调用,因此它不需要该idh:panelGrid=“grid”
在这里,我只执行了这些步骤,回调正常。浏览器中是否有js错误?没有。Firebug还显示了正确发布的值。好的,让我们进一步看看。可以找到SpinnerController.java的完整源代码。您的facelet与showcase facelet的不同之处仅在于
。您是否使用
而不是
?作为测试,您可以尝试更新主页(而不是对话框)上的outputText字段,看看这是否有效。@Matt Handy,我们开始吧:my SpinnerController.java就是这样,只是有另一个包名。如果没有prependId=“false”
对话框将不显示,因为表单ID连接到对话框ID。是的,我使用的是
。关于最后一次测试,我的设置程序没有一个被执行。但是所有的getter都有效。。。我不知道该看什么了。
<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>