【问题标题】:How to use <p:ajax> to pass javascript generated data to backing bean?如何使用 <p:ajax> 将 javascript 生成的数据传递给支持 bean?
【发布时间】:2013-02-13 13:13:53
【问题描述】:

我有一个 js 函数 codeAddress() 处理来自 address 的数据并更新 fullAddressvalidField 的值。
我尝试&lt;p:ajax&gt;fullAddressvalidField 的数据传递给backing bean,但是setter 方法似乎被调用了一个延迟的请求。

<h:form id="addressForm">
    <p:inputText id="address">
        <p:ajax onstart="codeAddress()" process="fullAddress validField"/>
    </p:inputText>
    <p:commandButton value="submit" />
    <p:inputText id="fullAddress" value="#{addressBean.fullAddress}" />
    <p:inputText id="validField" value="#{addressBean.valid}" />
</h:form>

【问题讨论】:

  • 在提交之前,我希望 javascript 处理来自address 的数据并更新fullAddressvalidField。然后我希望将fullAddressvalidField 的新值提交到支持bean。

标签: javascript ajax jsf-2 primefaces


【解决方案1】:

onstart 被调用就在即将发送 ajax 请求之前。那时,ajax 请求已经准备好很久了。因此,让它考虑更改的输入值为时已晚。

最好改用输入组件的onchange 属性。在准备好 ajax 请求之前调用它。

<p:inputText id="address" onchange="codeAddress()">
    <p:ajax process="fullAddress validField"/>
</p:inputText>

【讨论】:

  • 感谢您的回答。尽管听起来很有意义,但尽管服务器重新启动并清除了浏览器缓存,但行为似乎没有改变……在 chrome 中。在 Firefox 中,您的解决方案现在非常适合我。 :) 希望它会保持这种状态。 :D
  • 在 Chrome 中为我工作。确定你的 JS 没有坏?
  • 我在 JS 的末尾有一个 alert(),它可以在两个浏览器中执行。奇怪的行为仍然是一个坏的 JS 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 2012-07-19
  • 2013-12-30
相关资源
最近更新 更多