首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF - outputFormat试图将参数解析为数字。

JSF - outputFormat试图将参数解析为数字。
EN

Stack Overflow用户
提问于 2012-11-15 21:09:42
回答 1查看 3.4K关注 0票数 1

尝试使用带有本地化的primefaces日历。我考虑将javascript属性数组添加到相应的locale消息属性文件中。

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

代码语言:javascript
复制
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;

使用它就像:

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

应通过el函数检索月份和工作日名称,test值仅用于测试。

在以下方面的成果:

代码语言:javascript
复制
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">工作正常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-15 21:26:15

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

您在开始时看到的\u007B代表了{。实际上,它应该通过使用'来绕过它。对于结尾的\u007D也是如此,它表示}

代码语言:javascript
复制
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';

顺便说一句,你也可以把那些{}普通香草放在字符串里。

代码语言:javascript
复制
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''}';

注意:如前所述,'是转义字符,如果要将其表示为- is,请使用其中的两个。

代码语言:javascript
复制
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。字符串键和值应该是双引用的(尽管大多数and浏览器在这方面都没有引用)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13406256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档