Wicket具有灵活的国际化系统,该系统以多种方式支持对UI消息进行参数化。在StringResourceModel
javadocs中有示例,例如:
WeatherStation ws = new WeatherStation();
add(new Label("weatherMessage", new StringResourceModel(
"weather.${currentStatus}", this, new Model<String>(ws)));
但是我想要一个非常 简单的 东西,而找不到一个很好的例子。
在.properties文件中考虑这种UI消息:
msg=Value is {0}
具体来说,我不想为此目的创建模型对象(使用吸气剂替换要替换的值;如上述示例中的WeatherStation)。如果我已经在局部变量中包含值,那就太过分了,否则就不需要此类对象了。
这是一种用正确的值替换{0}的愚蠢的“蛮力”方法:
String value = ... // contains the dynamic value to use
add(new Label("message", getString("msg").replaceAll("\\{0\\}", value)));
有没有一种干净的,更精巧的方法来做到这一点 (这比上述时间长得多) ?
我认为最稳定的 WICKETY
方式可以通过改进来完成Jonik的回答有MessageFormat
:
.properties:
msg=Saving record {0} with value {1}
.java:
add(new Label("label", MessageFormat.format(getString("msg"),obj1,obj2)));
//or
info(MessageFormat.format(getString("msg"),obj1,obj2));
我为什么喜欢它:
StringResourceModel
。笔记:
如果要使用模型,则只需要创建一个简单的模型即可覆盖toString
该模型的功能,如下所示:
abstract class MyModel extends AbstractReadOnlyModel{
@Override
public String toString()
{
if(getObject()==null)return "";
return getObject().toString();
}
}
并将其作为MessageFormat
参数传递。
我不知道为什么Wicket不支持Model
反馈消息。但是如果得到支持,则没有理由使用这些解决方案,您可以StringResourceModel
在任何地方使用。
我已经阅读了一些关于如何自定义处理API请求验证错误的答案和问题。然而,这一切似乎有点过头了。我的endpoint中有一个简单的对象: 发送空值或空值时引发的错误是: 这条信息传递给前端有点太多了。他们需要的只是“目标群体不能是空白的”。我想将上面的信息转换为以下内容: 我怎样才能做到这一点?
主要内容:参数化日志的优势,两个参数变体,多个参数变体正如本教程前面所讨论的,SLF4J提供了对参数化日志消息的支持。可以在消息中使用参数,并在稍后的同一语句中将值传递给它们。 语法 如下所示,需要在消息(String)中的任何位置使用占位符(),稍后可以在对象形式中为占位符传递值,并使用逗号分隔消息和值。 示例 以下示例演示使用SLF4J进行参数化日志记录(使用单个参数)。 执行时,上述程序生成以下输出 - 参数化日志的优势 在Java中,如果需要
我正在使用Spring 3和Thymeleaf制作一些网页,我迷失了如何显示这样的消息: 欢迎message=你好{0},欢迎! 然后用thymeleaf标记内的用户名替换{0}: 我甚至不确定{0}是否是捆绑消息的正确语法。
https://cwiki.apache.org/confluence/display/kafka/0.8.0+SimpleConsumer+example 使用SimpleConsumer来使用消息,但是在使用它时,我发现了一些突然的行为,如下所示: 使用者正在使用来自特定分区的消息。但问题是,当我的使用者运行并且我使用生产者将消息推送到主题时,它将使用来自该分区的消息。但是,如果我的消费者目前
我正在使用Spring Boot 2.1.8构建一个项目,我的POM中有spring-boot-starter-web,我可以看到Maven将hibernate-validator 6.0.17拉到类路径上。 我在资源文件夹中有我的消息,它们似乎可以正确地查找,这样当我更改区域设置时,Spring就可以从正确的文件中加载消息。 my@RESTController中的相关方法采用@Valid和@Re
问题内容: 我已经在资源束中存储了一些消息。我正在尝试按以下格式设置这些消息。 假设第一个参数(即实际消息)存储在以某种方式检索到的属性文件中。 第二个参数(即5)是一个动态值,应放置在不会发生的占位符中。下一行打印, 您即将删除{0}行。 占位符不会替换为实际参数。 这里是撇号- 。我试图像往常一样逃避它,尽管它没有用。需要进行哪些更改才能使其正常工作? 问题答案: 向模式添加多余的撇号以确保显