2017-04-12 3 views
0

Ich habe ein Wrapper-Klasse wie folgt:Indizierung in Typ ‚com.ItemBean‘ wird nicht unterstützt

@NoArgsConstructor 
@Data 
public class ListWrapper { 

    public ListWrapper(List<Object> objects) { 

     this.objects = objects; 
    } 

    private List<Object> objects; 

} 

Ich suche den Wrapper mit benutzerdefinierten Bohnen zu füllen. Nennen wir es eine ItemBean.

Also ich habe:

@GetMapping("/rentSetup") 
public String setupRent(@RequestParam("companyId") Integer companyId, 
         Model model) { 

    List<Object> beans = new ArrayList<>(); 
    ItemBean bean = new Builder() 
       .someProperty(something) 
       .build(); 
    beans.add(bean); 

    ListWrapper wrapper = new ListWrapper(beans); 
    model.addAttribute("itemBeansWrapper", wrapper); 
    return "setup"; 
} 

Ich möchte dem Benutzer bearbeiten someProperty die Eigenschaft haben, auf in der Ansicht. Ich denke, dass ich tun würde:

<form th:object="${itemBeansWrapper}" 
     th:action="@{/setup(companyId=${companyId})}" 
     th:method="post"> 

    <div th:each="bean, iterStat : ${itemBeansWrapper.objects}"> 
     <input type="number" 
      th:name="${bean[__${iterStat.index}__].someProperty}"> 
    </div> 

    <button type="submit" 
      th:name="action" 
      th:value="review" value="review"> Review 
    </button> 
</form> 

Aber dies führt zu:

org.springframework.expression.spel.SpelEvaluationException: EL1027E:(pos 4): Indexing into type 'com.ItemBean' is not supported 
    at org.springframework.expression.spel.ast.Indexer.getValueRef(Indexer.java:176) 

Was mache ich falsch?

Beachten Sie, dass ich auch meinen Controller mit @SessionAttributes({"companyId", "itemBeansWrapper"}) annotiert habe, da ich den Wrapper über Seiten in der Sitzung beibehalten möchte.

Wenn ich die [__${iterStat.index}__] weglasse, kompiliert die Seite gut, aber ich denke, dass ich etwas so brauchen würde, um die verschachtelten Bohnen zu unterscheiden.

Antwort

0

Gefangen mein Fehler. Es sollte sein:

<input type="number" th:field="*{objects[__${iterStat.index}__].someProperty}"/> 
Verwandte Themen