Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
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 ");
}
}
}
Вот как это может работать. Вам необходимо изменить свой атрибут данных следующим образом:
<div data-foo='First line 
 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 делает 

.
Согласно спецификации 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
... и если вы пытаетесь понять это и используете 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.)
Вы можете использовать простой разрыв строки внутри значения атрибута:
<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
- это всего лишь два символа данных, не имеющих особого значения. Обозначение 

будет означать разрыв строки (в частности, LINE FEED), но это будет просто эквивалентно фактическому разрыву строки в суме.
Хорошо, вот один простой способ сделать это. вы должны записать его как
data-foo='First line </br> Second Line'
, и вместо использования .text () вы можете использовать .html (). когда вы используете .html (), тогда это займет отрыв строки, и это должно решить вашу проблему.