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.