gpt4 book ai didi

javascript - JSF - outputFormat 尝试将参数解析为数字

转载 作者:行者123 更新时间:2023-11-30 13:12:24 25 4
gpt4 key购买 nike

尝试将 primefaces 日历与本地化一起使用。我考虑将 javascript 属性数组添加到相应的语言环境消息属性文件中。

http://code.google.com/p/primefaces/wiki/PrimeFacesLocales

primefacesLocale=PrimeFaces.locales['de'] = \u007B closeText: 'Schlie\u00DFen', prevText: 'Zur\u00FCck', nextText: 'Weiter', {0} weekHeader: 'Woche', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: '', timeOnlyTitle: 'Nur Zeit', timeText: 'Zeit', hourText: 'Stunde', minuteText: 'Minute', secondText: 'Sekunde', currentText: 'Aktuelles Datum', ampm: false, month: 'Monat', week: 'Woche', day: 'Tag', allDayText: 'Ganzer Tag'\u007D;

像这样使用它:

<script type="text/javascript">
<h:outputFormat value="#{msg.primefacesLocale}" escape="false">
<f:param value="test"/>
</h:outputFormat>
</script>

应通过 el 函数检索月和星期名称,test值仅用于测试

结果:

java.lang.IllegalArgumentException: can't parse argument number:  closeText: 'Schließen'
at java.text.MessageFormat.makeFormat(MessageFormat.java:1420)
at java.text.MessageFormat.applyPattern(MessageFormat.java:479)
at java.text.MessageFormat.<init>(MessageFormat.java:381)
at com.sun.faces.renderkit.html_basic.OutputMessageRenderer.encodeEnd(OutputMessageRenderer.java:113)

这里有什么问题吗?

编辑:

使用:<h:outputText value="#{msg.primefacesLocale}" escape="false">工作正常。

最佳答案

MessageFormat API有一些特殊的字符。 {}'{} 表示格式参数索引的开始和结束。 ' 是一个转义字符(就像 \ 在字符串中一样)。

开头的 \u007B 代表 {。它实际上应该通过用 ' 包围它来转义。对于表示 } 的结尾 \u007D 也是如此。

primefacesLocale=PrimeFaces.locales['de'] = '\u007B' closeText: 'Schlie\u00DFen', prevText: 'Zur\u00FCck', nextText: 'Weiter', {0} weekHeader: 'Woche', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: '', timeOnlyTitle: 'Nur Zeit', timeText: 'Zeit', hourText: 'Stunde', minuteText: 'Minute', secondText: 'Sekunde', currentText: 'Aktuelles Datum', ampm: false, month: 'Monat', week: 'Woche', day: 'Tag', allDayText: 'Ganzer Tag''\u007D';

顺便说一句,您也可以将那些 {} plain vanilla 放在字符串中。

primefacesLocale=PrimeFaces.locales['de'] = '{' closeText: 'Schlie\u00DFen', prevText: 'Zur\u00FCck', nextText: 'Weiter', {0} weekHeader: 'Woche', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: '', timeOnlyTitle: 'Nur Zeit', timeText: 'Zeit', hourText: 'Stunde', minuteText: 'Minute', secondText: 'Sekunde', currentText: 'Aktuelles Datum', ampm: false, month: 'Monat', week: 'Woche', day: 'Tag', allDayText: 'Ganzer Tag''}';

注意:如前所述,' 是一个转义字符,如果您想按原样表示它,请使用其中两个。

primefacesLocale=PrimeFaces.locales['de'] = '{' closeText: ''Schlie\u00DFen'', prevText: ''Zur\u00FCck'', nextText: ''Weiter'', {0} weekHeader: ''Woche'', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: '''', timeOnlyTitle: ''Nur Zeit'', timeText: ''Zeit'', hourText: ''Stunde'', minuteText: ''Minute'', secondText: ''Sekunde'', currentText: ''Aktuelles Datum'', ampm: false, month: ''Monat'', week: ''Woche'', day: ''Tag'', allDayText: ''Ganzer Tag'''}';

这又是无效的 JSON。字符串键和值应该用双引号引起来(尽管大多数网络浏览器都允许这样做)。

关于javascript - JSF - outputFormat 尝试将参数解析为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13406256/

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