如何解决参数化模型中的字符串不起作用
我正在尝试参数化一个字符串并将该字符串设置为模型的结果:
SomePanel.java
public SomePanel( String id,IModel<Person> personModel)
{
tallLabel = new Label( "height",new LoadableDetachableModel() {
pubic String load() {
Person person = personModel.getobject();
boolean isTall = apiCalltocheckIfTall( person );
// 'name' is a property on PersonModel
String name = person.getName();
String tallString = messageformat.format(getString("Tall.Label"),name );
String shortString = messageformat.format(getString("Short.Label"),name );
return isTall ? tallString : shortString;
}
});
add(tallLabel);
}
文本属性
Tall.Label = ${name} is tall.
Short.Label = ${name} is short.
我尝试实现 solution,但 contact.getName()
产生错误。我的理解是 personModel.getobject()
会给我实际的对象(它定义了 getter getName
)所以不确定为什么会产生错误。
解决方法
MessageFormat 使用索引参数,因此您可能在这里混淆了一些技术。
这是使用带有名称参数的 Wicket 资源消息的最简单解决方案:
return getString(isTall ? "Tall.Label" : "Short.Label",personModel)
,
我设法让它与它一起工作:
SomePanel.java
public SomePanel( String id,IModel<Person> personModel)
{
tallLabel = new Label( "height",new LoadableDetachableModel() {
public String load() {
Person person = personModel.getObject();
boolean isTall = apiCallToCheckIfTall( person );
PersonGetter getter = new PersonGetter ( personModel );
String name = getter.getName();
String RTStringModel = MessageFormat.format( getString("Tall.Label"),person.getName() );
String StringModel = MessageFormat.format( getString("Short.Label"),person.getName() );
return isTall ? RTStringModel : StringModel;
}
});
add(tallLabel);
}
...
private class NameGetter implements Serializable
{
private final IModel<Person> model;
public NameGetter( final IModel<Person> personModel )
{
this.model = person;
}
public String getName()
{
return getFormattedLegalName( this.model.getObject() );
}
}
public static final String getFormattedLegalName( Person person )
{
if ( person == null )
{
return "";
}
else
{
return person.getName();
}
}
文本属性
Tall.Label = {0} is tall.
Short.Label = {0} is short.
不过,从模型中提取值似乎有点过分。我无法直接从 personModel
中获取名称(例如 personModel.getObject().getName()
),因此不得不创建另一个类的复杂路线。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。