我在webapp中使用国际化,我想再次重用一些消息 的面向-config.xml中
shuffleDeck: function (deck) {
var newDeck = deck;
for (i = 0; i<newDeck.length;i++){
randomIndex = Math.floor(Math.random() * deck.length);
newDeck[i] = deck[randomIndex];
deck.splice(randomIndex,1);
console.log(deck.length);
}
return newDeck;
}
来自资源包的消息
<locale-config>
<default-locale>en</default-locale>
<supported-locale>uk</supported-locale>
</locale-config>
<resource-bundle>
<base-name>international.message-labels</base-name>
<var>msgLabel</var>
</resource-bundle>
示例:
inputLength=Length should be {0} or more
在我看到的所有例子中都有效。但就我而言,我总是<p:inputText id="firstName" value="#{user.firstName}"
placeholder="#{msgLabel.namePlaceHolder}" size="25" required="true"
styleClass="logRegLabel" validatorMessage="#{msgLabel.inputLength}"
requiredMessage="#{msgLabel.fieldCannotEmpty}">
<f:param value="3" />
<f:validateLength minimum="3" />
<p:ajax event="blur" update="firstNameMsg" global="false" />
</p:inputText>
而不是Length should be {0} or more
我也试过这个Length should be 3 or more
此外,我尝试删除validatorMessage="#{msgLabel['inputLength']}"
的所有其他参数,但它没有帮助
答案 0 :(得分:2)
<f:param>
参数化捆绑邮件仅适用于<h:outputFormat>
。
<h:outputFormat value="#{bundle.key}">
<f:param value="value for {0}" />
<f:param value="value for {1}" />
<f:param value="value for {2}" />
</h:outputFormat>
JSF没有提供任何参数化任意属性值的工具。你最好的选择是创建一个custom EL function来完成下面的工作:
<p:inputText ... validatorMessage="#{my:format1(msgLabel.inputLength, '3')}" />
如果您碰巧使用JSF实用程序库OmniFaces,那么您可以使用它的of:format1()
。
<p:inputText ... validatorMessage="#{of:format1(msgLabel.inputLength, '3')}" />
或支持在EL变量中捕获输出的<o:outputFormat>
。
<o:outputFormat value="#{msgLabel.inputLength}" var="validatorMessage">
<f:param value="3" />
</o:outputFormat>
<p:inputText ... validatorMessage="#{validatorMessage}" />