【发布时间】:2020-08-27 22:54:05
【问题描述】:
我正在尝试显示带有百里香叶的选择列表。我有一个带有多键的实体类,我试图使用两个键之一作为我的选择列表的值,但是当我运行页面时,我捕获了上述异常。我已经测试过显示一个包含我的实体类的其他值的表(没有多键)并且它可以工作。 打印堆栈:
Caused by: org.attoparser.ParseException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringSelectFieldTagProcessor' (template: "dashboard" - line 62, col 21)
at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393)
at org.attoparser.MarkupParser.parse(MarkupParser.java:257)
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230)
... 52 more
Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringSelectFieldTagProcessor' (template: "dashboard" - line 62, col 21)
at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:117)
at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95)
at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633)
at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314)
at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleOpenElementEnd(TemplateHandlerAdapterMarkupHandler.java:304)
at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleOpenElementEnd(InlinedOutputExpressionMarkupHandler.java:278)
at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleOpenElementEnd(OutputExpressionInlinePreProcessorHandler.java:186)
at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleOpenElementEnd(InlinedOutputExpressionMarkupHandler.java:124)
at org.attoparser.HtmlElement.handleOpenElementEnd(HtmlElement.java:109)
at org.attoparser.HtmlMarkupHandler.handleOpenElementEnd(HtmlMarkupHandler.java:297)
at org.attoparser.MarkupEventProcessorHandler.handleOpenElementEnd(MarkupEventProcessorHandler.java:402)
at org.attoparser.ParsingElementMarkupUtil.parseOpenElement(ParsingElementMarkupUtil.java:159)
at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:710)
at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301)
... 54 more
Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'OEE' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153)
at org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:903)
at org.thymeleaf.spring5.context.webmvc.SpringWebMvcThymeleafRequestContext.getBindStatus(SpringWebMvcThymeleafRequestContext.java:227)
at org.thymeleaf.spring5.util.FieldUtils.getBindStatusFromParsedExpression(FieldUtils.java:306)
at org.thymeleaf.spring5.util.FieldUtils.getBindStatus(FieldUtils.java:253)
at org.thymeleaf.spring5.util.FieldUtils.getBindStatus(FieldUtils.java:227)
at org.thymeleaf.spring5.processor.AbstractSpringFieldTagProcessor.doProcess(AbstractSpringFieldTagProcessor.java:174)
at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74)
... 67 more
和我的代码:
@Controller
public class HelloController {
@Autowired
OEEService oeeService;
@GetMapping({"/", "/hello"})
public String hello(Model model, @RequestParam(value="name", required=false, defaultValue="World") String name) {
model.addAttribute("name", name);
return "index";
}
@GetMapping({"/dashboard"})
public String dashboard(Model model) {
List<OEE> oeelist = oeeService.SelDevice().stream().distinct().collect(Collectors.toList());
model.addAttribute("oeelist", oeelist);
return "dashboard";
}
}
@Entity
@Table(name = "MON_OEE")
@Data
@NoArgsConstructor
public class OEE implements Serializable
{
/**
*
*/
private static final long serialVersionUID = -7738922358421962399L;
@EmbeddedId
private OEEid oeeID;
@Basic(optional = false)
@Column(name = "MSO_QUANTITA")
private int amount;
@Basic(optional = false)
@Column(name = "MSO_OEE")
private float oee;
}
@Data
@Embeddable
@NoArgsConstructor
public class OEEid implements Serializable{
/**
*
*/
private static final long serialVersionUID = 4512114330774744082L;
@DateTimeFormat(pattern = "dd-MM-yy HH:mm:ss")
@Column(name = "MSO_GIORNO_LAV")
private Date date;
@Column(name = "MSO_MACCHINA")
private String device;
public OEEid(Date date, String device) {
super();
this.date = date;
this.device = device;
}
}
我在 html 页面上遇到错误的地方
<div class="container">
<div class="row">
<div class="col">
<form role="form">
<div class="form-group row">
<div class="col">
<form action="#" th:action="@{/dashboard}" th:object="${OEE}" method="POST">
<div class="container">
<select th:field="*{device}" multiple="multiple">
<option th:each="o : ${oeelist}"
th:value="${o.oeeID.device}" th:text="${o.oeeID.device}" >Wireframe</option>
</select>
</div>
</form>
</div>
</div>
</form>
</div>
<div class="col"></div>
<div class="col"></div>
</div>
</div>
【问题讨论】:
标签: spring-boot thymeleaf