【发布时间】:2014-10-06 23:04:01
【问题描述】:
感谢您抽出宝贵时间阅读我的问题。我在 PrimeFaces 论坛中搜索了“日历”,但没有看到类似的问题。我还搜索了 stack-overflow 以及 API 文档,但没有看到任何人尝试这样做(或者至少没有人对此有任何疑问。)
高级
仅供参考:我在 Jboss 7.11 GA 上运行 Jsf 2.1.2 和 PrimeFaces 5.0 以及 OmniFaces 1.6。
我正在尝试使用就地组件来使用日历组件作为日期选择器来获得内联日期编辑的功能,但我与模糊事件发生冲突。
我需要能够通过使用鼠标或键入日期并按 Enter 来选择日期,将新选择的日期保留为就地标签。为此,我连接到日历的 ajax dateSelect 事件以调用 inplace.save() (这也会隐藏所有内容),然后连接到 inplace 的保存事件并使用侦听器来保存数据,他们没有问题。
问题
在选择日期时,我需要能够单击页面上的其他位置并保存日历和就地值。为此,我一直在尝试使用日历的 ajax blur 事件并调用 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>
这里有人做过吗?是否有任何 [干净] 方法可以让我使用“点击远离日期选择器以保存它”功能,而不会对日历本身的可用性产生负面影响?
非常感谢任何输入,谢谢!
编辑: 将 inplace 用于数据密集型目的是相当粗糙的。这个想法在纸面上很好,但很难正确实施并涵盖所有边缘情况。我不喜欢使用 inplace 的一些事情是:
- 无法在数据输入字段中切换
- 导致验证和 resetInput 出现问题
- 当 javascript 不可用时不会正常降级
- 保存时对用户来说很神秘
我们最终决定不追求这个功能。但是,最接近的解决方案是答案中给出的解决方案(使用更改而不是模糊),它仍然有自己的一组“时髦”行为。
-波波曼
【问题讨论】:
标签: jsf jsf-2 primefaces