Resolvido!
A quem possa interessar, ficou assim:
JSP:
Code:
<form name="formCadastroPerfilMain" id="formCadastroPerfilMain" action="CriacaoPerfil.definirImagem.mtw" enctype="multipart/form-data" method="post">
Defina uma imagem para o seu perfil
<br/>
<table>
<tr>
<td valign="middle" align="center">
<input type="file" id="imagem" name="imagem" />
</td>
</tr>
<tr>
<td>
<img src="<mtw:contextPath />/CriacaoPerfil.previewImagem.mtw"/>
</td>
</tr>
<tr>
<td valign="middle" align="center">
<input type="submit" value="carregar imagem"/>
</td>
</tr>
</table>
</form>
Actions (eu uso innerActions):
Code:
public class CriacaoPerfil extends BaseLoginAction {
private Avatar avatar;
public String definirImagem () throws IOException {
FileItem objImageFile = (FileItem) input.getValue("imagem");
if(objImageFile != null){
avatar = new Avatar(objImageFile.get());
adhere();
return PREVIEW;
}
return SUCCESS;
}
public String previewImagem () {
output.setValue(StreamConsequence.STREAM_KEY, avatar.getArquivo());
//output.setValue(StreamConsequence.CONTENT_DISPOSITION_KEY, "inline;filename=teste.png");
return PREVIEW;
}
}
ApplicationManager:
Code:
action(CriacaoPerfil.class, "definirImagem")
.on(CriacaoPerfil.PREVIEW, fwd(PathConfig.getPublicPagesPath() + "/" + strPerfilClassName + "/" + PathConfig.getPublicCreationPath() + "/" + PathConfig.getCriacaoPerfilDefinicaoImagemPage()))
.on(SUCCESS, fwd(PathConfig.getPublicPagesPath() + "/" + strPerfilClassName + "/" + PathConfig.getPublicCreationPath() + "/" + PathConfig.getCriacaoPerfilDefinicaoEnderecoPage()))
.filter(new FileUploadFilter());
action(CriacaoPerfil.class, "previewImagem")
.on(CriacaoPerfil.PREVIEW, new StreamConsequence("image/png"));
Resumindo, eu seto em um atributo global os bytes do arquivo (avatar) e através de StickyAction (abençoado Menta...) eu pego esse arquivo na action de preview, que é acionada pela propria tag da imagem (<img src="...")
É isso! Valew pela atenção!
>