スプレッドシートを持つ 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;
}
}
申し訳ありませんが、ビューのコードを配置できません。許可がありません。
この問題の原因は何ですか?