[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 メーリングリストの案内