Вставить html-тег в подсказку [дубликат]

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
35
задан James Donnelly 28 October 2013 в 14:43
поделиться

4 ответа

Вот как это может работать. Вам необходимо изменить свой атрибут данных следующим образом:

<div data-foo='First line &#xa; Second Line'>foo</div>

и CSS (доказательство концепции):

[data-foo]:after {
    content: attr(data-foo);
    background-color: black;
    color: white;
    white-space: pre;
    display: inline-block;
}

Скрипт Демо: http: // jsfiddle .net / audetwebdesign / cp4RF /

Как это работает

Использование \a не работает, но эквивалентный объект HTML делает &#xa;.

Согласно спецификации CSS2.1, attr(attribute-label) возвращает строку, но строка не обрабатывается процессором CSS (я не уверен, что это означает точно). Я предполагаю, что \a должен интерпретироваться процессором CSS, чтобы код отображался как свойство.

Напротив, объект HTML интерпретируется браузером напрямую (я думаю ...), поэтому он работает.

Однако для работы линии вам нужно установить white-space: pre для сохранения пробела в псевдоэлементе. Примечание: вы можете также рассмотреть именно pre-wrap или pre-line в зависимости от характера вашего контента.

Ссылка

Что касается получения кода сущности HTML для перевода строки: http://www.fileformat.info/info/unicode/char/000a/index.htm

Что касается значения attr() для свойства content: http : //www.w3.org/TR/CSS2/generate.html#content

54
ответ дан Marc Audet 18 August 2018 в 09:06
поделиться
  • 1
    Любая идея, почему использование jQuery $ («[data-foo]»). Attr («data-foo», «First line & amp; #xa; Second Line») не работает? Он просто отображает «Первая строка & amp; #xa; Вторая линия ". – SYNCRo 28 June 2017 в 11:34

... и если вы пытаетесь понять это и используете HAML и AngularJS, используйте \n.

%a.tooltip{:"data-tip" => "Cost Per Unit: {{humanized_cost}} \n(Calculated for applicable Feature Qty.) "}

приводит к:

Cost Per Unit: $10.54
(Calculated for applicable Feature Qty.)
-1
ответ дан Eric Norcross 18 August 2018 в 09:06
поделиться

Вы можете использовать простой разрыв строки внутри значения атрибута:

<div data-foo="First line
Second Line">foo</div>

Браузеры были ошибочными в этом отношении, и спецификации HTML не были достаточно ясными по этому поводу; они обсуждают значение разрывов строк в элементе content (где они берутся как эквивалентные пробелам), но не в значениях атрибутов. В HTML5 CR правила синтаксического анализа для значений атрибутов дают понять, что разрывы строк просто добавляются к значению атрибута. Современные браузеры обычно играют по таким правилам.

Однако, когда вы используете значение в CSS через attr(...), разрыв строки обычно рассматривается как эквивалент пробела, поэтому вам нужно установить white-space на псевдоэлементе до значения, которое выполняет разрывы строк, а именно pre, pre-wrap или pre-line.

PS В HTML обозначение \a - это всего лишь два символа данных, не имеющих особого значения. Обозначение &#xa; будет означать разрыв строки (в частности, LINE FEED), но это будет просто эквивалентно фактическому разрыву строки в суме.

6
ответ дан Jukka K. Korpela 18 August 2018 в 09:06
поделиться

Хорошо, вот один простой способ сделать это. вы должны записать его как

data-foo='First line </br> Second Line'

, и вместо использования .text () вы можете использовать .html (). когда вы используете .html (), тогда это займет отрыв строки, и это должно решить вашу проблему.

-4
ответ дан Lokesh Gamot 18 August 2018 в 09:06
поделиться