1

いくつかの静的メソッドとプロパティを使用してユーティリティクラスを作成しようとしていますが、問題は、多言語を使用するために、これらのプロパティをmessages.propertiesファイルからロードする必要があることです。

MessageSourceAwareを使用する必要があると思いますが、メソッドを静的に保つ方法は?かなり迷っています。

さらに、ロケールを取得するにはどうすればよいですか?SessionLocaleResolverを使用していますが、jspでは自動的に読み込まれると思います。どうすればクラスで入手できますか?

[ありがとう、私は春にかなり新しいです]


もう少し詳しく説明しようと思います。

私は次のように定義されたクラスを持っています

public MyClass {
    protected static final MY_PROP = "this is a static property";

    protected static String getMyProp() {
        return MY_PROP;
    }
}

ロケールに応じて、messages.propertiesファイルからMY_PROPを挿入したいと思います。

public MyClass {
    protected static final MY_PROP = messageSource.getMessage("my.prop", locale);

    protected static String getMyProp() {
        return MY_PROP;
    }
}

これはどういうわけか可能ですか?

4

2 に答える 2

2

MethodInvokingFactoryBeanを使用して検討しましたか

または、次のようにapplicationContext.xmlの静的プロパティを挿入することでヘルプを取得できます。-

 <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="staticMethod" value="de.inweb.blog.BadDesign.setTheProperty"/>
    <property name="arguments">
        <list>
            <ref bean="theProperty"/>
        </list>
   </property>
</bean>
于 2012-11-26T17:35:41.307 に答える
0

さて、最終的に私はMessageSourceAwareを実装し、静的参照を削除してクラスを挿入しました。

だから次のようなもの:

public MyClass implements MessageSourceAware {
    // this is automatically injected by Spring
    private MessageSource messageSource;
    public void setMessageSource(MessageSource messageSource) {
        this.messageSource = messageSource;
    }
    // ###################

    protected String getMyProp(Locale locale) {
        return messageSource.getMessage("my.prop", null, locale);
    }
}

私のRESTサービスでは、RequestMappingのおかげで、ロケールがSpringによって自動的に注入されます。静的メソッドを回避するために、クラス全体も注入しました。

@Controller
public class Rest {

    @Autowired
    private MyClass myClass;

    @RequestMapping(method = RequestMethod.POST, value="/test", headers="Accept=application/json")
    public String myMethod(Locale locale) {
        return myClass.getMyProp(locale);
    }
}

これは機能しています。:)

于 2012-11-27T11:51:18.533 に答える