感谢您抽出宝贵时间阅读我的问题。我在PrimeFaces论坛上搜索了" calendar"并没有看到类似的问题。我还搜索了堆栈溢出以及API文档,并且没有看到有人试图这样做(或者至少没有人对它有任何问题。)
高级
作为一个FYI:我在Jboss 7.11 GA上使用OmniFaces 1.6运行Jsf 2.1.2和PrimeFaces 5.0。
我正在尝试使用inplace组件来获取使用日历组件作为日期选择器进行内联日期编辑的功能,并且我与模糊事件发生冲突。
我需要能够通过使用鼠标或键入日期并按Enter键来选择日期,将新选择的日期保留为原位标签。为此,我挂钩了日历的ajax dateSelect事件来调用inplace.save()(它也会隐藏所有内容),然后挂钩到inplace的save事件并使用一个监听器来进行数据保存,没问题。
问题
在选择日期时,我需要能够点击页面上的其他位置并保存日历和现场值。为此,我一直在尝试使用日历的ajax模糊事件并调用inplace.save()。
问题是点击其中一个月份分页箭头时会调用两次模糊事件。它会按预期隐藏日历和就地编辑,但我无法选择默认情况下显示的月份之外的任何月份。它可能只是月份分页的工作原理,但我不确定。
... dataTable var="currentObject"...
<p:inplace widgetVar="inplace">
<p:calendar>
<p:ajax event="dateSelect" oncomplete="PF('inplace').save()"/>
<p:ajax event="blur" oncomplete="PF('inplace').save()"/>
</p:calendar>
<p:ajax event="save" listener="#{myBean.save(currentObject)}" />
</p:inplace>
以前有人曾经这样做过吗?是否有任何[干净]的方式让我来点击日期选择器以保存它&#39;功能而不会对日历本身的可用性产生负面影响?
非常感谢任何输入,谢谢!
修改 使用inplace进行数据密集的目的相当粗糙。这个想法在纸上很好,但很难正确实现并覆盖所有边缘情况。我不喜欢使用的一些内容是:
我们决定最终不追求这个功能。然而,最接近的解决方案是答案中给出的解决方案(使用更改而不是模糊),它仍然有自己的一套“时髦”的解决方案。的行为。
-Boboman
答案 0 :(得分:0)
如果我做对了,你有两种情况:你通过日历选择器选择一个值,或者你输入它。
第一个由dateSelect
- 事件处理,对于第二个事件,您可以添加change
- 事件,因此保存该值,因为焦点超出了calendar-text-field。
尝试:
<p:calendar>
<p:ajax event="change" oncomplete="PF('inplace').save()"/>
<p:ajax event="dateSelect" oncomplete="PF('inplace').save()"/>
</p:calendar>