Pessoal, acho que encontrei o problema.
Eu estava fazendo post via jquery assim: $('#meuForm').submit(); E isso não tava rolando. Então mudei para um botão submit dentro do form, e deu certinho. Veja a saída:
B2B SITE: 14:34:27,922 DEBUG [VRaptor ] VRaptor received a new request
B2B SITE: 14:34:27,924 DEBUG [DefaultRequestExecution] executing stack DefaultRequestExecution
B2B SITE: 14:34:27,947 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor CommonsUploadMultipartInterceptor
B2B SITE: 14:34:27,947 DEBUG [CommonsUploadMultipartInterceptor] Trying to parse multipart request.
B2B SITE: 14:34:28,926 DEBUG [CommonsUploadMultipartInterceptor] Using repository /tmp for file upload
B2B SITE: 14:34:28,972 DEBUG [CommonsUploadMultipartInterceptor] Found 6 attributes in the multipart form submission. Parsing them.
B2B SITE: 14:34:29,153 DEBUG [VRaptorRequest ] Setting photo with [21850807.jpg]
B2B SITE: 14:34:29,153 DEBUG [MultipartItemsProcessor] Uploaded file: photo with [uploadedFile uploadedCompleteName=21850807.jpg uploadedName=21850807.jpg contentType=image/jpeg]
B2B SITE: 14:34:29,181 DEBUG [VRaptorRequest ] Setting id with []
B2B SITE: 14:34:29,181 DEBUG [VRaptorRequest ] Setting produtcName with [Mais um teste]
B2B SITE: 14:34:29,181 DEBUG [VRaptorRequest ] Setting code with [1292929]
B2B SITE: 14:34:29,181 DEBUG [VRaptorRequest ] Setting price with [100.00]
B2B SITE: 14:34:29,182 DEBUG [VRaptorRequest ] Setting specifications with [MAIS UM teste,]
B2B SITE: 14:34:29,186 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
B2B SITE: 14:34:29,186 DEBUG [DefaultResourceTranslator] trying to access /ralcantara/point-of-sale/save/
B2B SITE: 14:34:29,187 DEBUG [VRaptorRequest ] Setting companyName with [ralcantara]
B2B SITE: 14:34:29,188 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: CatalogController.saveCatalogController.save(String, Long, String, String, String, String, UploadedFile)]
B2B SITE: 14:34:29,190 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor
B2B SITE: 14:34:29,191 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InterceptorListPriorToExecutionExtractor
B2B SITE: 14:34:29,193 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor SiteAuthorizationInterceptor
B2B SITE: 14:34:29,195 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ClassificationInterceptor
B2B SITE: 14:34:29,195 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor SessionLoaderInterceptor
B2B SITE: 14:34:29,207 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor
B2B SITE: 14:34:29,222 DEBUG [LazyInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor
B2B SITE: 14:34:29,222 DEBUG [OgnlParametersProvider] Applying id with []
B2B SITE: 14:34:29,223 DEBUG [OgnlParametersProvider] Applying price with [100.00]
B2B SITE: 14:34:29,224 DEBUG [OgnlParametersProvider] Applying produtcName with [Mais um teste]
B2B SITE: 14:34:29,224 DEBUG [OgnlParametersProvider] Applying code with [1292929]
B2B SITE: 14:34:29,224 DEBUG [OgnlParametersProvider] Applying companyName with [ralcantara]
B2B SITE: 14:34:29,225 DEBUG [OgnlParametersProvider] Applying photo with [21850807.jpg]
B2B SITE: 14:34:29,225 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.interceptor.multipart.UploadedFileConverter
B2B SITE: 14:34:29,232 DEBUG [OgnlParametersProvider] Applying specifications with [MAIS UM teste,]
B2B SITE: 14:34:29,232 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for CatalogController.save(String, Long, String, String, String, String, UploadedFile) as [companyName, id, code, produtcName, price, specifications, photo]
B2B SITE: 14:34:29,232 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: CatalogController.saveCatalogController.save(String, Long, String, String, String, String, UploadedFile)] are [ralcantara, null, 1292929, Mais um teste, 100.00, MAIS UM teste,, [uploadedFile uploadedCompleteName=21850807.jpg uploadedName=21850807.jpg contentType=image/jpeg]]
B2B SITE: 14:34:29,235 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor
B2B SITE: 14:34:29,236 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
B2B SITE: 14:34:29,236 DEBUG [ExecuteMethodInterceptor] Invoking CatalogController.save(String, Long, String, String, String, String, UploadedFile)
B2B SITE: 14:34:29,432 DEBUG [DefaultLogicResult ] Executing CatalogController.index(String)
B2B SITE: 14:34:29,588 DEBUG [DefaultLogicResult ] Forwarding to /WEB-INF/jsp/catalog/index.jsp
B2B SITE: 14:34:29,611 DEBUG [DefaultStaticContentHandler] Deferring request to container: /WEB-INF/jsp/catalog/index.jsp
B2B SITE: 14:34:30,212 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor
B2B SITE: 14:34:30,212 DEBUG [ForwardToDefaultViewInterceptor] Request already dispatched and commited somewhere else, not forwarding.
B2B SITE: 14:34:30,213 DEBUG [VRaptor ] VRaptor ended the request
B2B SITE: 14:34:30,541 DEBUG [DefaultStaticContentHandler] Deferring request to container: /js/action.js
É isso mesmo?
Não tenho como fazer o upload via jQuery?
Na verdade, o q eu queria era manter os dados do form na tela, caso o metédo de inserção desse algum erro de validação. Por isso pensei em ajax.