Почему при загрузке файла мой файловый объект имеет значение null в Struts 2?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему при загрузке файла мой файловый объект имеет значение null в Struts 2?

Сообщение Anonymous »

Я пытаюсь исправить этот код, загружая файл изображения с помощью Struts 2.
Во время отладки я проверял в своем классе действий дескриптор переменных, descriptorContentType и descriptorFileName имеют значение null.
Я пытался найти проблему, но безрезультатно. Вот мой код, кто-нибудь знает, что с этим кодом не так?
ver.jsp:



























struts.xml:


/validador/cliente/fichaEmpresa/imagen/listar.jsp




listado
${codigoFichaEmpresa}




/validador/cliente/fichaEmpresa/imagen/ver.jsp




10485760
image/jpeg,image/png,image/gif

/validador/cliente/fichaEmpresa/imagen/imagenCorrecta.jsp
/validador/cliente/fichaEmpresa/imagen/ver.jsp



/validador/cliente/fichaEmpresa/imagen/listar.jsp




listado
${codigoFichaEmpresa}





FichaEmpresaImagenAction.java:
package com.construdata21.construdata.validador.vista.actions.cliente;

import com.construdata21.construdata.cliente.negocio.fachadas.FachadaCliente;
import com.construdata21.construdata.negocio.modelo.Archivo;
import com.construdata21.construdata.negocio.modelo.ArchivoImagen;
import com.construdata21.construdata.negocio.modelo.FichaEmpresa;
import com.construdata21.construdata.negocio.modelo.UsuarioConstrudata;
import com.construdata21.construdata.validador.negocio.fachadas.FachadaValidador;
import com.construdata21.construdata.validador.vista.actions2.ValidadorAction;
import com.construdata21.construdata.vista.comun.FachadaSesion;
import static com.opensymphony.xwork2.Action.SUCCESS;
import com.opensymphony.xwork2.ModelDriven;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Date;
import javax.imageio.ImageIO;
import org.apache.struts2.interceptor.validation.SkipValidation;

public class FichaEmpresaImagenAction
extends ValidadorAction
implements ModelDriven {

public static final int MAX_ANCHO_IMAGEN = 1024;
public static final int MAX_ALTO_IMAGEN = 800;

/**
* Atributo que conten a imaxe
*/
private final ArchivoImagen imagen = new ArchivoImagen();

/**
*
* @return imagen Archivo coa imaxe
*/
@Override
public Archivo getModel() {
return imagen;
}
/**
* Atributo que contén as imaxes da ficha empresa
*/
private Archivo[] imagenes;

/**
* Metodo que retorna o atributo imagenes
*
* @return imagenes Archivo[] coas imaxes
*/
public Archivo[] getImagenes() {
return imagenes;
}
/**
* Atributo co descriptor do arquivo
*/
private File descriptor;

/**
* Método que nos devolve o descriptor do arquivo
*
* @return File co descriptor
*/
public File getDescriptor() {
return descriptor;
}

/**
* Método que establece o descriptor do arquivo
*
* @param descriptor File
*/
public void setDescriptor(File descriptor) {
this.descriptor = descriptor;
}
private String descriptorContentType;

/**
* Content type do arquivo
*
* @return String descriptorContentType
*/
public String getDescriptorContentType() {
return descriptorContentType;
}

/**
* Método que establece o content type
*
* @param descriptorContentType
*/
public void setDescriptorContentType(String descriptorContentType) {
this.descriptorContentType = descriptorContentType;
}
/**
* Atributo co nome do descriptor
*/
private String descriptorFileName;

/**
* Método que nos devolve o nome do arquivo
*
* @return String
*/
public String getDescriptorFileName() {
return descriptorFileName;
}

/**
* Método que nos establece o nome do arquivo
*
* @param descriptorFileName
*/
public void setDescriptorFileName(String descriptorFileName) {
this.descriptorFileName = descriptorFileName;
}

/**
* Atributo que representa o codigo da ficha empresa
*/
private int codigoFichaEmpresa;

/**
* Metodo que retorna o codigo da ficha empresa
*
* @return codigoFichaEmpresa int co codigo
*/
public int getCodigoFichaEmpresa() {
return codigoFichaEmpresa;
}

/**
* Metodo que establece o codigo da ficha empresa
*
* @param codigoFichaEmpresa int co codigo
*/
public void setCodigoFichaEmpresa(int codigoFichaEmpresa) {
this.codigoFichaEmpresa = codigoFichaEmpresa;
}

/**
* Método encargado de visualizar unha imaxe da ficha empresa
*
* @return String co resultado da execución do action
* @throws Exception
*/
@SkipValidation
public String ver() throws Exception {

return SUCCESS;
}

/**
* Método encargado de gardar unha imaxe da ficha empresa
*
* @return String co resultado da execución do action
* @throws Exception
*/
public String guardar() throws Exception {
UsuarioConstrudata usuario = (UsuarioConstrudata) this.getSession().get(FachadaSesion.USUARIO_SESION_VALIDADOR);
if (codigoFichaEmpresa > 0) {
imagen.setArchivo(Files.readAllBytes(descriptor.toPath()));
imagen.setLongitud(descriptor.getTotalSpace());
imagen.setNombre(descriptorFileName);
imagen.setFechaValidacion(new Date());

imagen.setCodigo(FachadaValidador.guardarImagenFichaEmpresa(codigoFichaEmpresa, imagen, usuario));

FachadaValidador.validarArchivoImagen(
imagen.getCodigo(),
usuario.getCodigo());
}
return SUCCESS;
}

/**
* Metodo que executa a accion de eliminar as imaxes
*
* @return String co resultado
* @throws java.lang.Exception
*/
@SkipValidation
public String eliminar() throws Exception {
UsuarioConstrudata usuario = (UsuarioConstrudata) this.getSession().get(FachadaSesion.USUARIO_SESION_VALIDADOR);
if (codigoFichaEmpresa > 0 && imagen.getCodigo() > 0) {
FachadaValidador.fichaEmpresaImagenEliminar(codigoFichaEmpresa,
imagen.getCodigo(),
usuario);
}

return SUCCESS;
}

/**
* Metodo que executa a accion de listar
*
* @return String co resultado
* @throws java.lang.Exception
*/
@SkipValidation
public String listado() throws Exception {
UsuarioConstrudata usuarioSesion = (UsuarioConstrudata) getSession().get(FachadaSesion.USUARIO_SESION_VALIDADOR);
FichaEmpresa fichaEmpresa = FachadaCliente.getFichaEmpresaCompleta(codigoFichaEmpresa, usuarioSesion);
imagenes = fichaEmpresa.getImagenes();

return SUCCESS;
}

/**
* Metodo que executa a accion de listar
*
* @return String co resultado
* @throws java.lang.Exception
*/
@SkipValidation
public String moverImagen() throws Exception {
if (imagen.getCodigo() > 0 && codigoFichaEmpresa > 0) {
FachadaCliente.modificarOrdenImagenFichaEmpresa(
codigoFichaEmpresa,
imagen.getCodigo(),
imagen.getOrden()
);
}

UsuarioConstrudata usuarioSesion = (UsuarioConstrudata) getSession().get(FachadaSesion.USUARIO_SESION_VALIDADOR);
FichaEmpresa fichaEmpresa = FachadaCliente.getFichaEmpresaCompleta(codigoFichaEmpresa, usuarioSesion);
imagenes = fichaEmpresa.getImagenes();

return SUCCESS;
}

/**
* Metodo que valida unha imaxe
*
* @return resultado String co resultado
* @throws Exception
*/
@SkipValidation
public String validarImagen() throws Exception {
if (imagen.getCodigo() > 0) {
UsuarioConstrudata usuario = (UsuarioConstrudata) this.getSession().get(FachadaSesion.USUARIO_SESION_VALIDADOR);
FachadaValidador.validarArchivoImagen(imagen.getCodigo(), usuario.getCodigo());
}
return SUCCESS;
}

/**
* Metodo que valida o formulario (Imaxe)
*/
@Override
public void validate() {
super.validate();
BufferedImage img = null;

if (descriptor != null) {
try {
img = ImageIO.read(descriptor);
} catch (IOException ex) {

}
if (img != null) {
if (img.getWidth() > MAX_ANCHO_IMAGEN) {
this.addFieldError("descriptor", "Ha superado el ancho permitido: " + MAX_ANCHO_IMAGEN);
} else if (img.getHeight() > MAX_ALTO_IMAGEN) {
this.addFieldError("descriptor", "Ha superado el alto permitido: " + MAX_ALTO_IMAGEN);
}
} else {
this.addFieldError("descriptor", "El archivo no es una imagen");
}
} else {
this.addFieldError("descriptor", "Selecciona un archivo");
}
}

}



Подробнее здесь: https://stackoverflow.com/questions/792 ... n-struts-2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»