2014-02-05 2 views
1

Я создал форму:переплета ошибки со списком

<form:form action="${contextPath}/draw/constraints.do" method="post" modelAttribute="order"> <c:forEach items="${order.myDrawsAsArray}" var="draw" varStatus="status"> 
<label class="radio-inline"><form:radiobutton path="myDrawsAsArray[${status.index}].readable" value="true" /> yes</label> 
<label class="radio-inline"><form:radiobutton path="myDrawsAsArray[${status.index}].readable" value="false" /> no</label> 
</c:forEach></form:form> 

Когда я представить его, чтобы обновить свои объекты, я получил следующее исключение:

org.springframework.web.util.NestedServletException: Запрос не выполнен; inest exception is org.springframework.beans.InvalidPropertyException: Недопустимое свойство 'myDrawsAsArray [0]' из bean-класса [com.entity.Order3d]: Getter для свойства 'myDrawsAsArray' генерирует исключение; вложенное исключение составляет java.lang.reflect.InvocationTargetException org.springframework.beans.InvalidPropertyException: Недопустимое свойство 'myDrawsAsArray [0]' из класса компонента [com.entity.Order3d]: Getter за собственность 'myDrawsAsArray' бросили исключение; вложенное исключение составляет java.lang.reflect.InvocationTargetException java.lang.reflect.InvocationTargetException java.lang.NullPointerException com.entity.Order3d.getMyDrawsAsArray (Order3d.java:121)

Мой контроллер подобен это:

@Controller 
@RequestMapping("/draw") 
public class PrintingController { 
    @RequestMapping(value="/constraints") 
    public String constraints(
       @ModelAttribute Order3d order, 
       @RequestParam("order") int id, 
       @RequestParam(value="save", required=false) String save, 
       Model m) { 
     Session s=HibernateUtils.getSessionFactory().openSession(); 
     if(save!=null) { 
      System.out.println(order.getMyDraws()); 
      for(DrawFile df : order.getMyDraws()) 
       s.saveOrUpdate(df); 
     } 
     Order3d o=(Order3d)s.createCriteria(Order3d.class).add(Restrictions.eq("id", id)).uniqueResult(); 
     m.addAttribute("order", o); 
     s.close(); 
     return "3dconstraints"; 
    } 
} 

Я также разместить свои объекты, если вам нужны:

@Entity 
@Table (name="order3d") 
public class Order3d implements Serializable { 
    private static final long serialVersionUID = -2241346447352903470L; 
    public enum State {DEMAND, ESTIMATED, PAYED, PENDING, PRODUCED, SENT, DELIVERED}; 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column (name="id") 
    private int id; 
    @OneToMany(mappedBy="order3d", fetch = FetchType.EAGER, cascade=CascadeType.ALL) 
    private Set<DrawFile> myDraws; 
public Set<DrawFile> getMyDraws() { 
    return myDraws; 
} 
public List<DrawFile> getMyDrawsAsList() { 
    return new ArrayList<DrawFile>(myDraws); 
} 
public Object[] getMyDrawsAsArray() { 
    return myDraws.toArray(); //line 121 
} 
    //other getters & setters 
    public Order3d() {} 
} 
@Entity 
@Table (name="draw", [email protected](columnNames="hashname")) 
public class DrawFile implements Serializable { 
    private static final long serialVersionUID = -9024754876558087847L; 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column (name="id") 
    private int id; 
    @Column (name="hashname", columnDefinition="CHAR(64)") 
    private String hashname; 
    @Column (name="filename") 
    private String filename=""; 
    @Column (name="readable", columnDefinition = "BIT", length = 1) 
    private Boolean readable; 
    //getters & setters 
    public DrawFile() {} 
} 

Я искал в Интернете, но я не нашел решения. Есть идеи?

+1

и не может читать Установить с помощью [index] – user1428716

+0

Теперь я возвращаю список с открытым списком getMyDrawsAsList(); 'но я получил новое исключение:' org.springframework.web.util.NestedServletException: обработка запроса не удалась; Вложенное исключение - org.springframework.beans.InvalidPropertyException: Недопустимое свойство 'myDrawsAsList [0]' из класса bean [com.entity.Order3d]: Getter для свойства 'myDrawsAsList' выбрал исключение; inest exception is java.lang.reflect.InvocationTargetException ' – Athanor

+0

использовать Array [] – user1428716

ответ

0

Как насчет того, чтобы попытаться добавить getter/setter в поля как в классах Order3d, так и DrawFile?

методы получения и установки должны соответствовать имя поля, если поле

List<DrawFile> myDraws; 

то геттер/сеттер должен быть: (он не может быть getMyDrawsAsList())

public List<DrawFile> getMyDraws() { 
    return myDraws; 
} 


public void setMyDraws(List<DrawFile> myDraws) { 
    this.myDraws = myDraws; 
} 
+0

Я добавил геттеры, связанные с моим набором, изменил мой JSP, чтобы получить Array, но я бросаю новое исключение – Athanor

+0

Определите getter и setter на булевом флаге, пожалуйста – user1428716

Смежные вопросы