2009-10-01 7 views
5

Mam problem z przesłaniem pliku przy użyciu webflow 1.0 i rozpórki 1.3.Struts - przesyłanie plików

jsp jest coś takiego:

<html:form action="/flowAction" method="post" enctype="multipart/form-data"> 
    <!-- snip --> 
    <html:file property="file" name="attachDocumentsForm" size="50"/> 
    <!-- snip --> 
</html:form> 

forma jest coś takiego:

public class AttachDocumentsForm extends SpringBindingActionForm { 
    // note, SpringBindingActionForm extends struts' ActionForm 
    private FormFile file; 
    //snip 
} 

Teraz moim problemem jest to, że kiedy przesłać formularz, pole file jest zawsze null . Pozostałe pola w formularzu są wypełnione poprawnie, a jeśli przeszukuję plik RequestContext, mogę znaleźć plik głęboko w niektórych strukturach danych.

Oto strasznie brzydki sposób, że mogę dostać na zajęcia:

// 'context' is the RequestContext 
ServletExternalContext servletExternalContext = (ServletExternalContext) context.getExternalContext(); 
ActionForm form = (ActionForm) servletExternalContext.getRequest().getAttribute("actionForm"); 
FormFile file = (FormFile) form.getMultipartRequestHandler().getFileElements().get("file"); 

Zauważyłem, że MultipartRequestHandler na moim formularzu jest null i podejrzewam, że to może być częścią problem, ale próbowałem zapełnić go instancją CommonsMultipartRequestHandler bezskutecznie.

Co muszę zrobić, aby pole wypełniło się prawidłowo w polu file?

+0

nie powinno być możliwe, aby uzyskać plik z akcesor ActionForm, stosując (FormFile) form.getFile()? –

Odpowiedz

0

Dodaj pole o nazwie pliku FormFile w swoim ActionForm (ten, o którym mowa attachDocumentsForm), wraz z metodami akcesor.

Dostęp do przesłanego pliku można uzyskać, dzwoniąc pod numer form.getFile().

Mam nadzieję, że to pomoże!

+0

Dzięki, ale to tylko problem. Mam już jedno z tych pól w ActionForm, ale zawsze jest puste. –

+0

Nie wiem, czy ktoś przeszedł przez to od 2006 roku, ale mam ten sam problem w starszym projekcie, nad którym pracuję ... jeśli ktoś ma rozwiązanie, byłoby świetnie :-) – Philippe

+0

Ten sam problem tutaj. –

1

myślę, że należy skonfigurować wiosna dyspozytora serwletu: http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html#mvc-multipart-resolver

+0

Dzięki za aktualizację, zagłębię się w to. Wiem, że skonsultowałem się z dokumentami, które łączyłeś, i zdefiniowałeś procesor wieloczęściowy jako część tego procesu. Wcale nie jestem pewien, czy udało mi się to poprawnie podłączyć (minęło kilka miesięcy, odkąd na to patrzyłem). Zrobię jeszcze jeden krok, kiedy dostanę szansę. –