7

Spring-MVCの新機能。

2つのプロパティ(uploadFolder = ..、downloadFolder = ..)を.propertiesファイルに保存し、HomeControllerクラス(MVCテンプレートによって自動的に作成される)でアクセスしたいと思います。

方法を教えていただけませんか。

1)上記でapp.propertiesファイルを作成し、/ src / main/resourcesの下に配置します。これは正しいですか、それとも/ webapp / resourcesの下に置く必要がありますか?

2)次の方法でservlet-context.xmlにBeanを配置しました。これは正しいです?

<beans:bean id="messageSource"
   class="org.springframework.context.support.ResourceBundleMessageSource">
   <beans:property name="basename" value="app" />
</beans:bean>

3)Javaコントローラーでこれにアクセスするにはどうすればよいですか?

4)JSPでこれらにアクセスするにはどうすればよいですか?

どれだけ感謝するかわかりません。

4

2 に答える 2

21

それを行うにはいくつかの異なる方法があります。私は次のことをします。アプリのコンテキスト:

<util:properties id="myProps" location="classpath:app.properties" />

「util」名前空間を含めるために、ファイルの先頭に次のものがあることを確認してください。

xmlns:util="http://www.springframework.org/schema/util" 
xsi:schemaLocation= "... http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"

私は通常、プロパティファイルをsrc / main/resourcesに配置します。彼らがクラスパス上にいる限り、あなたは元気です。次に、コントローラーで、フィールド/メソッドに次のアノテーションを付けることができます。

@Controller
public class MyController {

    @Value("#{myProps['uploadFolder']}")
    private String uploadFolder

    @Value("#{myProps['downloadFolder']}")
    private String downloadFolder

    @RequestMapping("myPage")
    public String loadPage(ModelMap m) {
        m.addAttribute("uploadFolder", uploadFolder);
        m.addAttribute("downloadFolder", downloadFolder);
        return "myPage";
    }

    public void setUploadFolder(String uploadFolder) {
        this.uploadFolder = uploadFolder;
    }
    public void setDownloadFolder(String downloadFolder) {
        this.downloadFolder = downloadFolder;
    }
}

次に、JSPで:

Download folder: ${downloadFolder} <br/>
Upload folder: ${uploadFolder}

HTH。ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-04-06T14:38:50.837 に答える
0

1)より良い方法は使用することですsrc/main/resources

2)はい、しかしこれmessagesは異なる目的を持っています

3)

次のプロパティファイルからBeanを作成する1つの方法src/main/resources

<bean id="foldersConfig" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
   <property name="location" >
      <value>/WEB-INF/classes/folders.properties</value>
   </property>
</bean>

そして、コントローラーに参照を挿入するだけです。

ここで、コントローラーは次のようになります。xml:

<bean id="myController" class="my.project.package.controller.MyController">
 ...
 <property name="foldersConfig" ref="foldersConfig" />
</bean>

コントローラクラス、関連部分:

public class MyController extends ... {

 private Properties foldersConfig;

 public void setFoldersConfig(Properties config) {
   this.foldersConfig = config;
 }
}

4)プロパティを[ビュー]-[モデル]に配置するとアクセスできますが、これは適切なソリューションではありません。コントローラ(パス)に必要なものを取り、結果に入れます。

于 2012-04-06T14:41:54.917 に答える