我想用自定义的JSF h:outputtext替换标准的DataTable分页按钮。
这是当前的impl:
现在我需要完全改变按钮。问题是因为语言不同,我正在使用JSF messages.properties文件。
它应该是这样的:
所以我首先想到我可以用JS替换它,但由于语言不同,这不能起作用。因此,当用户是中国人时,文本必须从“下一个”更改为“下一个”,这不能通过JS脚本完成,因为DOM已经加载且JS没有JSF功能。
这是DOM的下一个按钮:
<a href="#" class="ui-paginator-next ui-state-default ui-corner-all ui-state-hover" aria-label="Next Page" tabindex="0"><span class="ui-icon ui-icon-seek-next">N</span></a>
所以我需要做这样的事情:
<a href="#" class="ui-paginator-next ui-state-default ui-corner-all ui-state-hover" aria-label="Next Page" tabindex="0"><span>#{msgs.nextMessage} →</span></a>
但是怎么样?
你应该有多个messages.properties文件,每个文件都适合你的不同语言吗?下面的示例显示了我如何创建一个处理英语和西班牙语的应用程序。
你将有一个message.properties:greeting = Hello!
然后,您将需要一个message_sp.properties:greeting = Hola!
您需要更新faces-config.xml,以确保您有以下内容。
<application>
<locale-config>
<default-locale>en_GB</default-locale>
<supported-locale>sp</supported-locale>
</locale-config>
<resource-bundle>
<base-name>uk.police.ecis.message</base-name>
<var>message</var>
</resource-bundle>
</application>
然后在你的JSF文件中,写下这样的东西:
<a href="#" class="paginatorStyle" aria-label="Next Page" tabindex="0"><span>#{message.greeting} →</span></a>
它会为你找出剩下的部分。 JSF中的国际化是您正在尝试的。希望有所帮助。