【问题标题】:Primefaces inplace calendar save on blur issuesPrimefaces 就地日历保存模糊问题
【发布时间】: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


    【解决方案1】:

    如果我猜对了,你有两种情况:你通过日历选择器选择一个值,或者你输入它。 第一个由dateSelect-event 处理,对于第二个,您可以添加change-event,因此当焦点离开日历文本字段时,值会被保存。

    试试:

    <p:calendar>
        <p:ajax event="change" oncomplete="PF('inplace').save()"/>
        <p:ajax event="dateSelect" oncomplete="PF('inplace').save()"/>
    </p:calendar>
    

    【讨论】:

    • 我认为您的意思是“dateSelect”和“change”?
    • 我想我最终将不得不接受这个解决方案。除非出现别的东西。虽然它不处理隐藏元素,如果您:单击它,不要更改值,然后单击其他内容 - 这可能必须“足够接近”。
    • 对不起,我搞砸了事件名称。我为 change 事件和 dateselect 设置了一个 ajax-tag(我已经编辑了上面的代码)。使用此星座,您可以更改值,每当您输入日期并单击文本字段外或单击日期选择器覆盖面板中的日期时。我希望它也对你有用。
    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2019-07-15
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    相关资源
    最近更新 更多