【问题标题】:h:selectOneListbox onchange and a4j:support event onchange conflictsh:selectOneListbox onchange 和 a4j:support 事件 onchange 冲突
【发布时间】:2012-09-12 14:06:16
【问题描述】:

我在jsp页面中有如下代码...

<h:selectOneListbox size="1" id="doseUnit"  onchange="generateSignature(),quantityUnitSelecator()" value="#{templatePrescriptionMaintenanceBackingBean.prescriptionUnit}">
<f:selectItems value="#{templatePrescriptionMaintenanceBackingBean.doseUnit}"/>
<a4j:support ajaxSingle="true" reRender="quantity,signature,signatureHidden,doseWarningList" actionListener="#{templatePrescriptionMaintenanceBackingBean.generatePrescriptionQuantity}"
event="onchange">
</a4j:support>

如果我在 a4j 中使用event="onchange",它不会调用我的generatePrescriptionQuantity,但如果我使用event="onblur",它可以正常工作。所以我认为这是列表框的 onchnage 方法的原因。实际上,我必须在更改时产生这种效果,并且还必须调用该脚本。


更新


当我进行以下修改时,第一次选择的问题已解决,但第二次选择(就在第一个选择项下方)同样的问题继续......我不明白为什么这是????

<h:selectOneListbox size="1" id="doseUnit" value="#{templatePrescriptionMaintenanceBackingBean.prescriptionUnit}">
<f:selectItems value="#{templatePrescriptionMaintenanceBackingBean.doseUnit}"/>
<a4j:support ajaxSingle="true" reRender="quantity,signature,signatureHidden,doseWarningList" actionListener="#{templatePrescriptionMaintenanceBackingBean.generatePrescriptionQuantity}"
event="onchange" oncomplete="generateSignature(),quantityUnitSelecator()">
</a4j:support>

<h:selectOneListbox size="1" id="route" value="#{templatePrescriptionMaintenanceBackingBean.prescriptionRoute}">
<f:selectItems value="#{templatePrescriptionMaintenanceBackingBean.route}"/>
<a4j:support ajaxSingle="true" reRender="quantity,signature,signatureHidden,doseWarningList" actionListener="#{templatePrescriptionMaintenanceBackingBean.generatePrescriptionQuantity}"
event="onchange" oncomplete="generateSignature()">
</a4j:support>

【问题讨论】:

  • 听起来好像您的 JS 函数之一崩溃了,因此 JS 上下文处于终止状态(这反过来又导致 ajax 请求根本不被触发)。检查 JS 控制台是否有任何错误。
  • @BalusC 是的,看起来像我删除了脚本并且没有脚本它工作正常。我的脚本错误控制台仍然没有错误。顺便感谢 BalusC...
  • 对不起,我不明白,你的第二个还有问题吗?没有脚本它工作正常吗?如果您的控制台中没有任何内容,请在您的脚本中放置一些警报,以查看它是否可以通过它们而不会死亡。此外,我不确定“return false”语句如何与 a4j 的 oncomplete 一起使用(如果有的话),但可能值得看看你的 js 是否返回 false,如果是,是否有任何影响。对不起,我不是 jsf 大师;所以只是抓住这里。祝你好运。
  • @mschor 感谢您的回复...这是我在代码中发现的故障错误。实际上它正在调用我的java方法generatePrescriptionQuantity。该方法内部的逻辑太大,并且在某些条件之间有一个返回调用,这导致我返回并且我所需的代码没有执行。这只是我的跟踪问题。我需要更完美。但是感谢@BalusC(JSF 大师...)和您...

标签: java jsf ajax4jsf


【解决方案1】:

可能是您在 h:selectOneListbox 中的 onchange 不能很好地与 a4j:support 中的 onchange 配合使用吗?尝试从列表框中删除您的 onchange 并将其放在 a4j 标记的 onsubmit 属性中。

【讨论】:

  • 而不是 Onsubmit 我把它放在对我有用的 oncomplete 事件中,但我有多个 selectonelistbox 顺序,我必须为每个选择的所有 a4j 采取该步骤。对于第一个选择,此解决方案有效,但在下一个选择中无效。让我更新我的代码以更清晰。
  • 感谢 mschor 的帮助。我已经更新了我的问题。请帮忙。
猜你喜欢
  • 2019-04-29
  • 2011-02-18
  • 1970-01-01
  • 2017-12-08
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多