1

Spring MVC/jsp プロジェクトでファイル アップロード ページを取得しようとしていますが、ファイルが正しくアップロードされています。ログ ファイルにファイル名が出力され、ファイル名が ModelAndView に追加されます。ビュー(.jspファイル)でそれらにアクセスするには、それらは存在しないように見えます..しかし、私が追加した別のオブジェクトは..

ModelAndView にファイル名を追加するコントローラーは次のとおりです。

@RequestMapping(value = "/uploadFiles.html", method = RequestMethod.POST)
public String save(@ModelAttribute Token token, @ModelAttribute("uploadForm") FileUpload fileUpload, ModelAndView mav)
{
    List<MultipartFile> files = fileUpload.getFiles();

    List<String> fileNames = new ArrayList<String>();

    if(files != null && files.size() > 0)
    {
        for(MultipartFile file : files)
        {
            if(!file.isEmpty())
            {
                fileNames.add(file.getOriginalFilename());
                logger.info("Got file with name: " + file.getOriginalFilename());
            }
        }

        logger.info("Total filenames: " + fileNames.size());
    }

    mav.addObject("files",fileNames);
    mav.addObject("token",token);
    return "etl/EtlUploadSuccess";
}

ログ出力は、それが機能していることを示しています:

09:51:09,072 INFO  [Controller] [http-bio-8080-exec-4] Got file with name: ExcelFileOne.xlsx
09:51:09,085 INFO  [Controller] [http-bio-8080-exec-4] Got file with name: ExcelFileTwo.xls
09:51:09,096 INFO  [Controller] [http-bio-8080-exec-4] Total filenames: 2

ファイル名を表示する必要がある成功ページのコードのスニペットを次に示します。

    <p>The following files have been uploaded successfully with the token ${token.name}:</p>
    <c:forEach items="${files}" var="file">
        ${file}<br/>
    </c:forEach>

ページには次が表示されます。

The following files have been uploaded successfully with the token testToken:

それだけです...ファイル名が表示されない理由がわかりません...

4

2 に答える 2

1

このように、ModelAndView を返すようにメソッド シグネチャを変更してみてください。

@RequestMapping(value = "/uploadFiles.html", method = RequestMethod.POST)
public ModelAndView save(@ModelAttribute Token token, @ModelAttribute("uploadForm")    FileUpload fileUpload) 
{
    List<MultipartFile> files = fileUpload.getFiles();

    List<String> fileNames = new ArrayList<String>();

    if(files != null && files.size() > 0)
    {
        for(MultipartFile file : files)
        {
            if(!file.isEmpty())
            {
                fileNames.add(file.getOriginalFilename());
            logger.info("Got file with name: " + file.getOriginalFilename());
            }
        }

        logger.info("Total filenames: " + fileNames.size());
    }

    ModelAndView mav = new ModelAndView("etl/EtlUploadSuccess");
    mav.addObject("files",fileNames);
    mav.addObject("token",token);
    return mav;
}

メソッドの ModelAndView パラメータも削除したことに注意してください。

于 2013-07-29T14:27:15.190 に答える