boneazul, como o Sergio disse, vc vai ter que usar a api do Blobstore diretamente nesse caso, não vai dar pra receber o parâmetro pelo VRaptor…
se vc precisar fazer isso em mais lugares, a gente pode tentar fazer uma alteração no ParametersProvider do VRaptor pra usar o BlobStore para preencher os parâmetros, quando for necessário.
É bem parecido com o seu na verdade. Sem suar upload diretamente mas pela API direto do Blobstore.
@Resource
public class DownloadsController {
private final Result result;
private final HttpServletRequest request;
private final HttpServletResponse response;
private final Configuracoes config;
private final BlobstoreService blobstoreService;
public DownloadsController(BlobstoreService blobstoreService, Result result,
HttpServletRequest request, HttpServletResponse response, Configuracoes config) {
this.blobstoreService = blobstoreService;
this.result = result;
this.request = request;
this.response = response;
this.config = config;
}
@Path("/admin/downloads/enviar")
public void formulario () {
String uploadUrl = blobstoreService.createUploadUrl("/admin/downloads/upload");
result.include("uploadUrl", uploadUrl);
}
@Path("/admin/downloads/upload")
public void upload () {
Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(request);
BlobKey blobKey = blobs.get("arquivo");
if (blobKey == null) {
result.use(Results.http()).sendError(500);
} else {
result.redirectTo("/admin/");
}
}
}
No meu caso eu não faço nada com a BlobKey, apenas vejo se foi criado direitinho.
(depois eu busco diretamente na tabela do Blobstore por um critério meu)
Mas o sergio pelo visto seu form não manda nada alem de um arquivo até ai tudo bem funcionaria bem .
Mas no meu caso é um form com uma entidade junto mais o upload de 1 arquivo ate pq eu salvo essa key relacionado com a entidade toda para poder recuperar depois!!
Separe as lógicas e deixe um método somente para o upload. Caso contrário você terá que instanciar manualmente o objeto e setar os valores via request.getParameter. Na documentação do blobstore tem um exemplo do uso do request.getParameter.
Separe as lógicas e deixe um método somente para o upload. Caso contrário você terá que instanciar manualmente o objeto e setar os valores via request.getParameter. Na documentação do blobstore tem um exemplo do uso do request.getParameter.[/quote]
Até ai num tenho problema em instanciar na mao Garcia o problema é que .
request.getParameter(“explicacao.titulo”) ou request.getParameter(“explicacao.descricao”) chega null…o problema ta sendo ai entendeu ??
Tenho um ComponentFactory que faz exatamente isso também…
@RequestScoped
@Component
public class BlobstoreServiceComponentFactory implements ComponentFactory<BlobstoreService> {
public final BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
public BlobstoreService getInstance() {
return blobstoreService;
}
}