Java 在Struts中,How';消息的替换值';可以从ResourceBundle中选择in-ActionMessage

Java 在Struts中,How';消息的替换值';可以从ResourceBundle中选择in-ActionMessage,java,struts,resourcebundle,messageformat,Java,Struts,Resourcebundle,Messageformat,我为实现它所做的一切 操作文件: 应用程序资源: 我想要的是: 有一个短路径可以将“消息的替换值”替换为硬编码单词“Member”。 喜欢 messages.add(ActionMessages.GLOBAL_MESSAGE,newactionmessage(“MESSAGE.save”,“Member”)) 但是 以上三条是用各自的语言文字替换“消息替换值”的漫长路线 寻找像硬编码一样的短路线 在struts.xml中包含以下元素 <constant name="struts.custo

我为实现它所做的一切

操作文件:

应用程序资源:

我想要的是:

有一个短路径可以将“消息的替换值”替换为硬编码单词“Member”。 喜欢 messages.add(ActionMessages.GLOBAL_MESSAGE,newactionmessage(“MESSAGE.save”,“Member”))

但是

以上三条是用各自的语言文字替换“消息替换值”的漫长路线


寻找像硬编码一样的短路线

在struts.xml中包含以下元素

<constant name="struts.custom.i18n.resources" value="ApplicationResources" />

将ActionSupport扩展到您的Action类

com.opensymphony.xwork2.ActionSupport

在需要属性值的任何位置使用以下函数

getText(字符串键)


您可以使用
MessageFormat
设置带有参数的消息格式

MessageFormat.format(rb.getString("message.save"), new Object[]{title})

并将其与
ActionMessage
一起使用,就像Struts在使用
MessageResources
时所做的那样

为什么不想在
操作文件中给出路径?因为当我写“newactionMessage(“message.save”,“Member”);“我不需要路径来获取”message.save“,所以应该有一些方法来获取它,而不需要路径或字符串title=getResources(request)。getMessage(getLocale(request),“entity.Member”);对于消息资源,您需要资源文件路径。您需要先加载资源包,然后才能使用它。
1. MessageResources resources = getServlet().getInternal().getMessageResources("com....ApplicationResources")

2. ResourceBundle rb = ResourceBundle.getBundle("com.....ApplicationResources");

3. String title = getResources(request).getMessage(getLocale(request), "entity.member");

messages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("message.save",title ));
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
MessageFormat.format(rb.getString("message.save"), new Object[]{title})