Skip to content

Error window creation fails if the error text contains html #74

@Dudeplayz

Description

@Dudeplayz

An API is returning the following error:

odata.ODataException: ODataError(code=Request-URI Too Long(414), message=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Request URL Too Long</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Request URL Too Long</h2>
<hr><p>HTTP Error 414. The request URL is too long.</p>
</BODY></HTML>

Which results in:

Caused by: java.lang.IllegalArgumentException: HTML must contain exactly one top level element (ignoring text nodes). Found 2 elements with the tag names span, html
	at com.vaadin.flow.component.Html.setOuterHtml(Html.java:145) ~[flow-server-23.3.17.jar:23.3.17]
	at com.vaadin.flow.component.Html.<init>(Html.java:113) ~[flow-server-23.3.17.jar:23.3.17]
	at com.flowingcode.vaadin.addons.errorwindow.ErrorWindow.createErrorLabel(ErrorWindow.java:259) ~[error-window-vaadin-3.5.1.jar:3.5.1]
	at com.flowingcode.vaadin.addons.errorwindow.ErrorWindow.createMainLayout(ErrorWindow.java:165) ~[error-window-vaadin-3.5.1.jar:3.5.1]
	at com.flowingcode.vaadin.addons.errorwindow.ErrorWindow.initWindow(ErrorWindow.java:145) ~[error-window-vaadin-3.5.1.jar:3.5.1]
	at com.flowingcode.vaadin.addons.errorwindow.ErrorWindow.lambda$new$26ff2c46$1(ErrorWindow.java:107) ~[error-window-vaadin-3.5.1.jar:3.5.1]
	at com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:233) ~[flow-server-23.3.17.jar:23.3.17]
	at com.vaadin.flow.component.ComponentEventBus.fireEvent(ComponentEventBus.java:222) ~[flow-server-23.3.17.jar:23.3.17]
	at com.vaadin.flow.component.Component.fireEvent(Component.java:393) ~[flow-server-23.3.17.jar:23.3.17]
	at com.vaadin.flow.component.ComponentUtil.fireEvent(ComponentUtil.java:416) ~[flow-server-23.3.17.jar:23.3.17]
	at com.vaadin.flow.component.ComponentUtil.onComponentAttach(ComponentUtil.java:233) ~[flow-server-23.3.17.jar:23.3.17]
	at com.vaadin.flow.internal.nodefeature.ComponentMapping.lambda$onAttach$0(ComponentMapping.java:104) ~[flow-server-23.3.17.jar:23.3.17]
	at java.util.Optional.ifPresent(Optional.java:178) ~[?:?]
	at com.vaadin.flow.internal.nodefeature.ComponentMapping.onAttach(ComponentMapping.java:103) ~[flow-server-23.3.17.jar:23.3.17]
	at com.vaadin.flow.internal.StateNode.lambda$fireAttachListeners$8(StateNode.java:858) ~[flow-server-23.3.17.jar:23.3.17]

I don't understand why Span isn't used directly here:

final Html errorLabel = new Html("<span>" + label + "</span>");
errorLabel.getElement().getClassList().add("errorlabel");
return errorLabel;

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions