gpt4 book ai didi

javascript - 具有德语语言环境的 PrimeFaces Spinner

转载 作者:可可西里 更新时间:2023-11-01 02:44:46 25 4
gpt4 key购买 nike

在 Java 网络项目中,我们使用 PrimeFaces 4.0 作为 JSF 扩展。现在我们在 PrimeFaces 中遇到了 Spinner (p:spinner) 组件的问题。我们将微调器嵌入到我们自己的自定义标记中以设置一些默认值,例如 stepFactor 和区域设置。 JSF 标记的主体如下所示:

    <p:spinner id="#{id}" value="#{value}" min="#{min}" max="#{max}" stepFactor="0.1" size="5" onchange="#{onchange}" >
<f:convertNumber pattern="#0.00" locale="de_DE"/>
</p:spinner>

这对于组件的绑定(bind)和渲染来说效果很好。在下面的屏幕截图中,您会看到在“de_DE”语言环境中设置并正确格式化的 float 2.6f(使用逗号而不是点作为小数点分隔符)。

Screenshot after rendering the page

但是,当用户使用微调器按钮更改值时,格式立即出错。该值甚至从组件中解析错误。在下一个屏幕截图中,一旦我们单击“向上”按钮一次,您就可以看到完全相同的微调器。这实际上应该导致在组件中显示值“2,70”。

Screenshot after pressing the "up" butotn once.

有没有人遇到过类似的问题?

是否有我们可以在此处应用的处理 p:spinner 组件的 JavaScript 的标准修复,或者我们是否真的需要深入研究 PrimeFaces JS 库并自行修复?

最佳答案

f:convertNumber 是服务器端转换。值的递增和递减事件是 JavaScript,在值返回到服务器之前不会考虑 f:convertNumber,因此应该使用丑陋的 JavaScript 解决方案。

我已经为这个问题创建了一个补丁,我使用了 Number.prototype.toLocaleString()将数字转换为本地化版本。

您所要做的就是包括 pf.spinner.local.fix.js并按以下方式设置您的首选语言环境(在 document.ready 中):

PF('spinnerWidgetVarName').cfg['local'] = 'de-DE';

有几点需要注意:

  • Number.prototype.toLocaleString()

enter image description here

  • 此补丁已在 PrimeFaces 5.0 和 4.0 上进行测试和确认

这是关于 github 的一个小例子和一个 Demo

关于javascript - 具有德语语言环境的 PrimeFaces Spinner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26795175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com