0

スプレッドシートを持つ Struts2 のフォームがあります。そのスプレッドシートは 3 行 5 列で始まり、スプレッドシートがいっぱいになると、JavaScript を使用して別の行を追加します。

Java コードは、glassfish 4.0 および Java 7u25 で実行されます。

netbeans でテストすると問題なく動作しますが、本番環境で実装してフォームを送信すると、アクション クラスで最初の 3 行は完全に取得されますが、4 行目以降は null オブジェクトが取得されます

配列サイズを作成すると、行数がわかりますが、3 に続く行は常に null になります。

また、glassfish でこの構造を共有する 2 つのアプリがあり、サーバーを再起動すると、2 番目のアプリがこのエラーで失敗し始めます。

pojo とアクション クラスのコードは次のとおりです。

オーデンカルガポジョ

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Administrador
 */
public class OrdenCargaPojo {
    protected int id = 0;
    protected List<ArticulosPojo> articulos = new ArrayList<ArticulosPojo>();
    protected double importe = 0;
    protected boolean soloLectura = false;

    // Cargo la configuracion de la grilla
    public OrdenCargaPojo() {
        // inicio la grilla
        articulos.add(new ArticulosPojo());
        articulos.add(new ArticulosPojo());
        articulos.add(new ArticulosPojo());
    }

    /**
     * @return the articulos
     */
    public List<ArticulosPojo> getArticulos() {
        return articulos;
    }

    /**
     * @param articulos the articulos to set
     */
    public void setArticulos(List<ArticulosPojo> articulos) {
        this.articulos = articulos;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the soloLectura
     */
    public boolean isSoloLectura() {
        return soloLectura;
    }

    /**
     * @param soloLectura the soloLectura to set
     */
    public void setSoloLectura(boolean soloLectura) {
        this.soloLectura = soloLectura;
    }

    /**
     * @return the totalGrilla
     */
    public double getImporte() {
        return importe;
    }

    /**
     * @param totalGrilla the totalGrilla to set
     */
    public void setImporte(double importe) {
        this.importe = importe;
    }      
}

Articulosポジョ

import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author Administrador
 */
public class ArticulosPojo implements Serializable {
    private static final long serialVersionUID = 1L;
    private int id;
    private String etiqueta = "";
    private String tropa = "";
    private String garron = "";
    private Date fechaFaena;
    private double peso = 0;

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the etiqueta
     */
    public String getEtiqueta() {
        return etiqueta;
    }

    /**
     * @param etiqueta the etiqueta to set
     */
    public void setEtiqueta(String etiqueta) {
        this.etiqueta = etiqueta;
    }

    /**
     * @return the tropa
     */
    public String getTropa() {
        return tropa;
    }

    /**
     * @param tropa the tropa to set
     */
    public void setTropa(String tropa) {
        this.tropa = tropa;
    }

    /**
     * @return the garron
     */
    public String getGarron() {
        return garron;
    }

    /**
     * @param garron the garron to set
     */
    public void setGarron(String garron) {
        this.garron = garron;
    }

    /**
     * @return the fechaFaena
     */
    public Date getFechaFaena() {
        return fechaFaena;
    }

    /**
     * @param fechaFaena the fechaFaena to set
     */
    public void setFechaFaena(Date fechaFaena) {
        this.fechaFaena = fechaFaena;
    }

    /**
     * @return the peso
     */
    public double getPeso() {
        return peso;
    }

    /**
     * @param peso the peso to set
     */
    public void setPeso(double peso) {
        this.peso = peso;
    }
}

GuardarOrdenCargaアクション

/**
 * llama a los dao para guardar los datos
 */
public class GuardarOrdenCargaAction extends ActionSupport{
    private OrdenCargaPojo ordenCarga = new OrdenCargaPojo();

    /**
     * carga y llama a los dao para guardar los datos
     * @return
     * @throws Exception
     */
    @Override
    public String execute() throws Exception {

        for (ArticulosPojo articulos : ordenCarga.getArticulos()) {
            if(articulos.getId() > 0){ // error - nullpointer luego de la 3ra fila
                System.out.println(articulos.getId());
            }
        }

        return SUCCESS;
    }


    /**
     * @return the OrdenCarga
     */
    public OrdenCargaPojo getOrdenCarga() {
        return ordenCarga;
    }

    /**
     * @param OrdenCarga the OrdenCarga to set
     */
    public void setOrdenCarga(OrdenCargaPojo ordenCarga) {
        this.ordenCarga = ordenCarga;
    }
}

申し訳ありませんが、ビューのコードを配置できません。許可がありません。

この問題の原因は何ですか?

4

0 に答える 0