2

Struts2-FileUploadInterceptorを使用して、アップロードされるファイルのコンテンツタイプと最大サイズを処理しています。

エラーメッセージを表示するために、<s:fielderror/>完璧なエラーメッセージを表示しています。

複数のセクションがあるページで作業していますが、そのセクションにのみ属するエラーメッセージを表示する必要があります。問題<s:fielderror/>は、すべてのエラーメッセージが表示され、このパラメータを解決するために、次のように渡されることです。

<s:fielderror><s:param>firstName</s:param></s:fielderror>

コンテンツタイプエラーと最大サイズエラーに対してFileUploadInterceptorによって作成されたエラーキーが何であるかわかりません。この問題に対処するのを手伝ってください。

4

1 に答える 1

1

私があなたを正しく理解しているなら、あなたはこのようなことをしたいと思います:

<s:fielderror>[some reference to a content type error]</s:fielderror>
<s:fielderror>[some reference to a max size error]</s:fielderror>

それらを別々に/異なってレンダリングできるようにします。

フィールド名のみを取得するため、これは現在不可能です。 この方法では、1つのフィールドの複数のエラーを分離することはできません。<s:fielderror/>

さらに、のメソッドのソースコードを見ると、最初に最大サイズがチェックされ、そのチェックが失敗した場合はエラーが設定されます。最大サイズがすでに失敗している場合、コードは許可されたタイプのチェックを続行しません。acceptFileFileUploadInterceptor

  353           } else if (maximumSize != null && maximumSize < file.length()) {
  354               String errMsg = getTextMessage(action, "struts.messages.error.file.too.large", new Object[]{inputName, filename, file.getName(), "" + file.length()}, locale);
  355               if (validation != null) {
  356                   validation.addFieldError(inputName, errMsg);
  357               }
  358   
  359               LOG.warn(errMsg);
  360           } else if ((!allowedTypesSet.isEmpty()) && (!containsItem(allowedTypesSet, contentType))) {
  361               String errMsg = getTextMessage(action, "struts.messages.error.content.type.not.allowed", new Object[]{inputName, filename, file.getName(), contentType}, locale);
  362               if (validation != null) {
  363                   validation.addFieldError(inputName, errMsg);
  364               }
  365   
  366               LOG.warn(errMsg);
  367           }

したがって、一度にこれらのエラーの1つだけを取得する必要があります。

于 2012-07-12T14:44:16.413 に答える