在 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(使用逗号而不是点作为小数点分隔符)。
但是,当用户使用微调器按钮更改值时,格式立即出错。该值甚至从组件中解析错误。在下一个屏幕截图中,一旦我们单击“向上”按钮一次,您就可以看到完全相同的微调器。这实际上应该导致在组件中显示值“2,70”。
有没有人遇到过类似的问题?
是否有我们可以在此处应用的处理 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';
有几点需要注意:
关于javascript - 具有德语语言环境的 PrimeFaces Spinner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26795175/
我需要使用Ruby和Capybara捕获浏览器的控制台日志(类别:信息)。到目前为止,我已经尝试使用driver.manage.logs.get(:browser)或(:client)但是,使用它,结果不是我想要的。它给出了selenium和浏览器之间的交互结果,我可以在其中看到我的javascript语句已发送执行,但结果输出无法被捕获。 最佳答案 使用selenium时日志是否可用取决于您使用Selenium的浏览器。如果您使用的是Firefox,那您就不走运了,因为它不支持日志检索API,但是由于您使用的是Chrome,因此可
卡在这个问题上有一段时间了。letemployees=[[['firstName','Joe'],['lastName','Blow'],['age',42],['role','clerk']],[['firstName','Mary'],['lastName','Jenkins'],['age',36],['role','manager']]]屈服:[{first
是否可以根据条件在流中键入变量?像这样:consttype='xyz';consta:(type==='xyz')?number:string; 最佳答案 Flow中的类型级条件可以使用类型调用($Call类型)来模拟:type$If<X:boolean,Then,Else=empty>=$Call<&((true,Then,Else)=>Then)&((false,Then,Else)=>Else),X,Then,Else,>;type$Not&l
我的React应用程序在本地主机上运行良好,但是当我将其部署在gh-pages或surge中时,它无法让我使用URL在页面之间移动。这是项目仓库link演示网址here用户可以点击右上角的menuItem进入注册页面。但如果用户使用http://chat.susi.ai/signup/URL,它给出了404页面我尝试了几种来自互联网的解决方案,但没有奏效。下一个问题是:我创建了一个404页面以在用户尝试移动到损坏的链接时显示。它在localhost中工作正常。但不在生产中。我试过this解决方案,但没有任何改变。这是我的index.js文件的一部分constApp=()=>(&l
有没有一种方法可以在不使用外部库的情况下在JavaScript中检查时区名称是否有效?当用户在文本字段中输入时区名称时,我想验证时区是否有效?我知道我们可以使用moment-timezone库轻松完成。但我不想使用任何额外的库。我正在寻找纯JavaScript方式。isValidTimeZone(name){//returntrue/false}isValidTimeZone('Asia/Colombo');//returnstrueisValidTimeZone('America/Los_Angeles');//returnstrueisValidTi
我需要像普通浏览器一样从Nodejs发出请求。我是什么意思?我可以设置任何HTTP信息,例如cookie、header、正文。因此,根据需要构建HTTP请求。请求发出后,所有的响应数据都应该是可读的,比如SetCookie....如果可以在session期间自动保存cookie,那就太好了。因此,我不需要在每次提出所有进一步请求时都包含它们。所以只需模拟一个真实的浏览器以保持session有没有框架库可以提供这样的功能? 最佳答案 对于不需要解析HTML或运行客户端JavaScript的情况,您可以使用简单的工具,例如Request
这个问题在这里已经有了答案:GetalluniquevaluesinaJavaScriptarray(removeduplicates)(91个答案)关闭5年前。如何使用Array.filter()返回唯一的id和name?我的场景与我研究过的解决方案略有不同,因为我有一个对象数组。我找到的每个示例都包含单个值的平面数组。data=[{id:555,name:"Sales",person:"Jordan"},{id:555,name:"Sales",person:"Bob"},{id:555,name:"Sales
我想为我的元素创建饼图,所以我正在使用ChartJS,但是chartJS存在一些问题,如果我使用10到20个数据字段,那么时间图表看起来不错,但是当我我在一个图表中应用了50到60个以上的数据字段,所以图表看起来比图例小,如果有时数据字段比隐藏的图表多,你只能看到图例,图表就不见了。我想为该图例设置高度或宽度,如果有更多数据,也适用于滚动条。这是供您引用的fiddle链接https://jsfiddle.net/KDM1010/5um78rbk/<canvasid="myChart"width="500"height="300"&g
在构建Vue应用程序时,我们在每个模板中重复使用某些Vue组件。我们的网格系统存在于.region、.layout、.grid、.column元素之外。它们都是独立的Vue组件(,...)。我们现在在每个模板中都这样做:importBlMainfrom'~components/frame/main/Main.vue'importBlRegionfrom'~components/frame/region/Region.vue'importBlLayoutfrom'~components/frame/layout/Layout.vue'imp
我想确保我所有的onClick事件都在onKeyDown事件旁边。我将使用eslint-plugin-jsx-a11y来确保这一点。但在代码中,这是一种实现这种泛型的方法。我的意思是,一直这样做会很烦人:if(event.keyCode===13){...}如果用户使用onClick中的执行函数,我希望有一种方法可以告诉onKeyDown中的元素。或者类似的解决方案http://www.karlgroves.com/2014/11/24/ridiculously-easy-trick-for-keyboard-accessibility/例如,在Angular方面,我很清楚。让我们寻找
我需要使用Ruby和Capybara捕获浏览器的控制台日志(类别:信息)。到目前为止,我已经尝试使用driver.manage.logs.get(:browser)或(:client)但是,使用它,结果不是我想要的。它给出了selenium和浏览器之间的交互结果,我可以在其中看到我的javascript语句已发送执行,但结果输出无法被捕获。 最佳答案 使用selenium时日志是否可用取决于您使用Selenium的浏览器。如果您使用的是Firefox,那您就不走运了,因为它不支持日志检索API,但是由于您使用的是Chrome,因此可
卡在这个问题上有一段时间了。letemployees=[[['firstName','Joe'],['lastName','Blow'],['age',42],['role','clerk']],[['firstName','Mary'],['lastName','Jenkins'],['age',36],['role','manager']]]屈服:[{first
是否可以根据条件在流中键入变量?像这样:consttype='xyz';consta:(type==='xyz')?number:string; 最佳答案 Flow中的类型级条件可以使用类型调用($Call类型)来模拟:type$If<X:boolean,Then,Else=empty>=$Call<&((true,Then,Else)=>Then)&((false,Then,Else)=>Else),X,Then,Else,>;type$Not&l
我的React应用程序在本地主机上运行良好,但是当我将其部署在gh-pages或surge中时,它无法让我使用URL在页面之间移动。这是项目仓库link演示网址here用户可以点击右上角的menuItem进入注册页面。但如果用户使用http://chat.susi.ai/signup/URL,它给出了404页面我尝试了几种来自互联网的解决方案,但没有奏效。下一个问题是:我创建了一个404页面以在用户尝试移动到损坏的链接时显示。它在localhost中工作正常。但不在生产中。我试过this解决方案,但没有任何改变。这是我的index.js文件的一部分constApp=()=>(&l
有没有一种方法可以在不使用外部库的情况下在JavaScript中检查时区名称是否有效?当用户在文本字段中输入时区名称时,我想验证时区是否有效?我知道我们可以使用moment-timezone库轻松完成。但我不想使用任何额外的库。我正在寻找纯JavaScript方式。isValidTimeZone(name){//returntrue/false}isValidTimeZone('Asia/Colombo');//returnstrueisValidTimeZone('America/Los_Angeles');//returnstrueisValidTi
我需要像普通浏览器一样从Nodejs发出请求。我是什么意思?我可以设置任何HTTP信息,例如cookie、header、正文。因此,根据需要构建HTTP请求。请求发出后,所有的响应数据都应该是可读的,比如SetCookie....如果可以在session期间自动保存cookie,那就太好了。因此,我不需要在每次提出所有进一步请求时都包含它们。所以只需模拟一个真实的浏览器以保持session有没有框架库可以提供这样的功能? 最佳答案 对于不需要解析HTML或运行客户端JavaScript的情况,您可以使用简单的工具,例如Request
这个问题在这里已经有了答案:GetalluniquevaluesinaJavaScriptarray(removeduplicates)(91个答案)关闭5年前。如何使用Array.filter()返回唯一的id和name?我的场景与我研究过的解决方案略有不同,因为我有一个对象数组。我找到的每个示例都包含单个值的平面数组。data=[{id:555,name:"Sales",person:"Jordan"},{id:555,name:"Sales",person:"Bob"},{id:555,name:"Sales
我想为我的元素创建饼图,所以我正在使用ChartJS,但是chartJS存在一些问题,如果我使用10到20个数据字段,那么时间图表看起来不错,但是当我我在一个图表中应用了50到60个以上的数据字段,所以图表看起来比图例小,如果有时数据字段比隐藏的图表多,你只能看到图例,图表就不见了。我想为该图例设置高度或宽度,如果有更多数据,也适用于滚动条。这是供您引用的fiddle链接https://jsfiddle.net/KDM1010/5um78rbk/<canvasid="myChart"width="500"height="300"&g
在构建Vue应用程序时,我们在每个模板中重复使用某些Vue组件。我们的网格系统存在于.region、.layout、.grid、.column元素之外。它们都是独立的Vue组件(,...)。我们现在在每个模板中都这样做:importBlMainfrom'~components/frame/main/Main.vue'importBlRegionfrom'~components/frame/region/Region.vue'importBlLayoutfrom'~components/frame/layout/Layout.vue'imp
我想确保我所有的onClick事件都在onKeyDown事件旁边。我将使用eslint-plugin-jsx-a11y来确保这一点。但在代码中,这是一种实现这种泛型的方法。我的意思是,一直这样做会很烦人:if(event.keyCode===13){...}如果用户使用onClick中的执行函数,我希望有一种方法可以告诉onKeyDown中的元素。或者类似的解决方案http://www.karlgroves.com/2014/11/24/ridiculously-easy-trick-for-keyboard-accessibility/例如,在Angular方面,我很清楚。让我们寻找