[Seasar-user:17347] [teeda] ExternalMessageUtil について

Tonomura-Akira [E-MAIL ADDRESS DELETED]
2009年 4月 30日 (木) 13:24:02 JST


お世話になっております。殿村と申します。

TeedaでファイルアップロードができるWebアプリを作成しています。

アップロード処理のエラーチェックをカスタマイズしたかったので
MultipartFormDataFilter を継承し、doFilterメソッドをオーバーライドしました。

エラーメッセージは、MultipartFormDataRequestWrapperを参考にして
ExternalMessageUtil.addMessageを使用してみたのですが
下記のようにNullPointerExcepitonでエラーになってしまいます。

ソースを参考にする限り、特にExternalMessageUtilの使用に制限はないように
思えるのですが、なにか前提があるのでしょうか?

すいませんが、よろしくお願いいたします。

環境
 Teeda-1.0.13-SP2
 WebSphere 6.1.17

===== 継承して作成したクラス =====

public class PMultipartFormDataFilter extends MultipartFormDataFilter {

	@Override
	public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
		if (request.getAttribute(DOFILTER_CALLED) != null) {
			chain.doFilter(request, response);
			return;
		}
		request.setAttribute(DOFILTER_CALLED, "true");

=====(略)=====
		HttpServletRequest multipartRequest =
			new MultipartFormDataRequestWrapper(httpRequest, maxSize, maxFileSize, thresholdSize, repositoryPath);

		// 最後にファイルサイズ全体でチェック
		Map filemap = ((MultipartFormDataRequestWrapper)multipartRequest).getFileItems();
		Iterator files = filemap.values().iterator();
		long fileSizeSum = 0;
		while( files.hasNext() ){
			FileItem file = (FileItem)files.next();
			fileSizeSum += file.getSize();
		}
		if( fileSizeSum > maxSize ){
            ExternalMessageUtil.addMessage(multipartRequest,ExtensionConstants.FILE_UPLOAD_SIZE_ERROR_MESSAGE,
                                           new Object[] { maxSize, fileSizeSum });
		}
		
		chain.doFilter(multipartRequest, response);

=====

===== エラーダンプ ====
java.lang.NullPointerException
	at org.seasar.teeda.extension.component.TForEach.appendLineInfoToErrorMessage(TForEach.java:319)
	at org.seasar.teeda.extension.component.TForEach.processEachRowValidation(TForEach.java:256)
	at org.seasar.teeda.extension.component.TForEach.processValidatorsAllRows(TForEach.java:245)
	at org.seasar.teeda.extension.component.TForEach.processValidators(TForEach.java:228)
	at javax.faces.component.ComponentUtil_.processAppropriatePhaseAction(ComponentUtil_.java:49)
	at org.seasar.teeda.extension.component.TCondition.processAppropriateAction(TCondition.java:106)
	at org.seasar.teeda.extension.component.TCondition.processValidators(TCondition.java:97)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:434)
	at javax.faces.component.ComponentUtil_.processAppropriatePhaseAction(ComponentUtil_.java:49)
	at javax.faces.component.UIForm.processAppropriateAction(UIForm.java:85)
	at javax.faces.component.UIForm.processValidators(UIForm.java:73)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:434)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:434)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:434)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:104)
	at org.seasar.teeda.core.lifecycle.impl.ProcessValidationsPhase.executePhase(ProcessValidationsPhase.java:30)
	at org.seasar.teeda.core.lifecycle.AbstractPhase.execute(AbstractPhase.java:57)
	at org.seasar.teeda.core.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:100)

=====


-- 
             <<<  殿村  亮  E-Mail  [E-MAIL ADDRESS DELETED] >>>
              <<<   株式会社EXA          第1事業部             >>>
               <<<    鉄鋼システム第2開発部  購買チーム            >>>
                <<<     TEL:03-5419-2794        FAX:03-5419-0016     >>>



Seasar-user メーリングリストの案内