2

すべて正常に動作しているファイルをアップロードして<t:inputFileUploadいますが、ファイルが web.xml で設定された値よりも大きい場合、エラーまたは警告メッセージは出力されません。私のコード:

  <h:form id="uploadForm" enctype="multipart/form-data">    
               <t:inputFileUpload id="fileupload" accept="image/*" storage="file"
                    value="#{fileUpload.uploadedFile}" styleClass="fileUploadInput"
                    required="true" validator="epacient.FileUploadValidator"  validatorMessage="Napacna vrsta ali prevelika datoteka."/>
                <h:message for="fileupload" style="color: red;" />
                <br />
                <h:commandButton value="Upload" id="fileUploadButton" action="#{fileUpload.upload}" />
                <h:message for="uploadForm" style="color: red;" />
   </h:form>

ファイルが大きすぎる場合、<h:messageタグにエラーを書き込む必要がありますが、間違っていますか?

どうすれば問題を解決できますか?

よろしくお願いします

4

2 に答える 2

4

これはトマホークではできません。uploadMaxFileSizeただし、で を構成することはできますExtensionsFilterが、それが発生すると、SizeLimitExceededExceptionすべての JSF の範囲を超える a が強制的にスローされるため、エンドユーザーは醜い HTTP 500 エラー ページで終了します。web.xml特定のステータス コードまたは例外タイプに対してのみ表示されるカスタム エラー ページを定義することはできますFacesMessageが、最後に で表示できる で適切に取得する方法はありませんh:message

これをすべてうまく行う唯一の方法は、無制限のサイズのアップロードまたは 1 GB の制限などを許可することです (これは面倒かもしれませんが、結局のところ、そうするのはクライアント自身の決定です;) .. クライアントからの苦情を避けるために、フォームのどこかに最大許容サイズに関する明確なメッセージがあることを確認してください)。このようにして、関連付けられValidatorた に を表示する実数を利用できます。たとえば、次のようになります。ValidatorExceptionh:message

private static final long MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB

public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
    if (((UploadedFile) value).getSize() > MAX_FILE_SIZE) {
        throw new ValidatorException(new FacesMessage("Sorry, max 10MB allowed."));
    }
}
于 2010-02-12T11:24:02.790 に答える
0

Balus C が言ったように、これはよく知られた問題です。参照: http://issues.apache.org/jira/browse/TOMAAWK-1381

Tomahwak の新しいバージョンではこれが修正されていると思います。

于 2010-02-12T20:46:30.350 に答える