Primefaces inplace calendar可以节省模糊问题

时间:2014-10-06 23:04:02

标签: jsf jsf-2 primefaces

感谢您抽出宝贵时间阅读我的问题。我在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进行数据密集的目的相当粗糙。这个想法在纸上很好,但很难正确实现并覆盖所有边缘情况。我不喜欢使用的一些内容是:

  • 无法标记数据输入字段
  • 导致验证问题和resetInput
  • 当javascript不可用时,不会优雅地降级
  • 发生保存时对用户不明白

我们决定最终不追求这个功能。然而,最接近的解决方案是答案中给出的解决方案(使用更改而不是模糊),它仍然有自己的一套“时髦”的解决方案。的行为。

-Boboman

1 个答案:

答案 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>