1

Tapestryでは.properties、ローカライズされたメッセージを含むファイルはpagecomponentおよびアプリケーションメッセージカタログにあります。私はクラスがfrompagescomponentspackagesではなく、通常の方法でメッセージを挿入したいと思っています。

@Inject
private Messages messages;

後でローカライズされたメッセージを取得するには

String msg = messages.get("message-key");

およびクラスに対して行われるよう.propertiesに、対応するフォルダー(つまり、クラスsrc/main/java/nonPageOrComponentPackage/Foo.javaから)にファイルを配置しようとしましたが、機能しませんでした。scr/main/resources/nonPageOrComponentPackage/Foo.propertiespagecomponent

.propertiesこのファイルへのパスをどこかに指定する必要がありますか?方法でやってみました

public void contributeValidationMessagesSource(@NotNull Configuration<String> configuration) {
  configuration.add("/scr/main/resources/nonPageOrComponentPackage/Foo.properties");
}

AppModule、しかしそれも機能しませんでした。

前もって感謝します!

4

1 に答える 1

0

メッセージ取得のメカニズムは、ページ/コンポーネント内でのみ使用されるように設計されています。アプリケーションメッセージカタログがあります。これは、いくつかのベースページ/コンポーネントカタログでオーバーライドしてから、エンドページ/コンポーネントカタログでオーバーライドできます。これはすべて、ページとコンポーネントに対してのみ機能します。

@Injectクラスがページまたはコンポーネントでない場合は、アノテーションを使用してアプリケーションメッセージカタログのみを挿入できます。また、サービスに貢献してComponentMessageSource、アプリケーションカタログにメッセージバンドルを追加することもできます。

@Contribute(ComponentMessagesSource.class)
public void contributeComponentMessagesSource(@Value("context:WEB-INF/mail") Resource mailMessages, OrderedConfiguration<Resource> configuration) {
  configuration.add("mail", mailMessages);
}

ただし、このメッセージバンドルは、すべてのページ/コンポーネントおよびサービスで利用できることを理解する必要があります。

特定のメッセージバンドルにアクセスするもう1つの方法は、MessageImplを使用することです。しかし、この方法には注意が必要です。タペストリー内部クラスを使用します。

messages = MessagesImpl.forClass(Foo.class);
于 2013-03-15T11:08:25.163 に答える