質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.06%

terasoluna(strutsベース)でファイルアップロード機能を複数配置する方法

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,211

score 437

 概要・質問

Terasoluna Server(v2.0.5.3)を使ってWebシステムを開発しています。

https://ja.osdn.net/projects/terasoluna/releases/63023
http://terasoluna.osdn.jp/tutorial/server-web/Document/WebTutorial_2.4.1.html

今、ファイルアップロード機能を複数配置したいです。
下記のソースで実装しましたが、submitボタンを押したときエラーが発生しました。

エラーの原因と対応方法を教えてください。
また、このようなファイルアップロードの複数配置は実現可能なものなのでしょうか?

 ソース

<form action="sampleAction.do" method="post" enctype="application/x-www-form-urlencoded">
  <input type="file" name="imageFiles">
  <input type="file" name="imageFiles">
  <input type="file" name="imageFiles">
</form>
import org.apache.struts.upload.FormFile;
import lombok.Data;

@Data //LombokでGetter/Setterを自動生成
public class SampleForm extends ValidatorActionFormEx {
  private FormFile[] imageFiles = null;
}

 exceptionの内容

業務で使っているクラス名があったため、一部修正しています。

[ERROR][RequestProcessorEx] javax.servlet.ServletException: BeanUtils.populate
    at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:503)
    at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:816)
    at jp.terasoluna.fw.web.struts.action.RequestProcessorEx.processPopulate(RequestProcessorEx.java:311)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
    at jp.terasoluna.fw.web.struts.action.RequestProcessorEx.process(RequestProcessorEx.java:149)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at jp.co.toyota.common.filters.CutJsessionidFilter.doFilter(CutJsessionidFilter.java:38)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    ...
Caused by: java.lang.IllegalArgumentException: Cannot invoke SampleForm.setImageFiles on bean class 'class SampleForm' - argument type mismatch - had objects of type "org.apache.struts.upload.CommonsMultipartRequestHandler$CommonsFormFile" but expected signature "[Lorg.apache.struts.upload.FormFile;"
    at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2235)
    at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:2151)
    at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1957)
    at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:2064)
    at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1017)
    at org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:830)
    at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:433)
    at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:501)
    ... 51 more
Caused by: java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2170)
    ... 58 more

 追記

ファイル選択要素が1個のときは、アップロードに成功しました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • 退会済みユーザー

    退会済みユーザー

    2016/11/01 08:10

    formが間違えているのでは?

    キャンセル

  • yuji38kwmt

    2016/11/09 23:57

    ファイル選択要素が1個のときは、アップロードに成功しました。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る