Я обращался к нему, как
CustomerService customerService = new CustomerService();
String resolver = customerService.getCustomerData();
Что неверно и решено
@Reference
private CustomerService customerService;
String resolver = customerService.getCustomerData();
Для первого случая речь идет о выравнивании flexbox по умолчанию, которое составляет stretch
. Таким образом, все элементы будут растянуты, чтобы соответствовать высоте контейнера 1 sup>, таким образом, меню будет иметь такую же высоту, что и содержимое. Другими словами, самый высокий элемент будет определять высоту, а другой будет растягиваться, чтобы соответствовать этой высоте.
Измените выравнивание, и у вас больше не будет такого поведения:
html,
body {
height: 100%;
}
.app {
display: flex;
align-items:flex-start; /*anything different from stretch*/
}
.menu {
background-color: red;
width: 100px;
height:100%;
}
.content {
flex: 1;
border: 1px solid blue;
}
<div class="app">
<div class="menu">menu</div>
<div class="content">
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
</div>
</div>
Добавив height:100%
Вы теперь явно применяете высоту к элементу (растяжка больше не применяется), но это не приведет к значению auto
(высоте содержимого), потому что у родительского элемента не указана высота 2 [ 1145] sup>
html,
body {
height: 100%;
}
.app {
display: flex;
}
.menu {
background-color: red;
width: 100px;
height:100%;
}
.content {
flex: 1;
border: 1px solid blue;
}
<div class="app">
<div class="menu">menu</div>
<div class="content">
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
<div>content</div>
</div>
</div>
1 sup> Если крестик Свойство size элемента flex вычисляется как auto, и ни одно из полей поперечной оси не имеет значения auto, элемент flex растягивается . Используемым значением является длина, необходимая , чтобы размер поперечного сечения поля поля элемента был как можно ближе к тому же размеру, что и линия , при этом соблюдая ограничения, налагаемые min-height / min-width / max-height / max-width. ref sup>
blockquote>У нас есть только одна строка в нашем случае, поэтому она такая же, как и весь контейнер. [ 1135]
2 sup> Указывает процентную высоту. Процент рассчитывается по отношению к высоте блока, содержащего сгенерированный блок . Если высота содержащего блока не указана явно (то есть зависит от высоты содержимого), и этот элемент не является абсолютно позиционированным, значение вычисляется как «auto» . < sup> ref sup>
blockquote>Добавьте высоту в приложение, и вы увидите, что происходит:
[ 114]<div class="app"> <div class="menu">menu</div> <div class="content"> <div>content</div> <div>content</div> <div>content</div> <div>content</div> <div>content</div> <div>content</div> <div>content</div> <div>content</div> <div>content</div> <div>content</div> <div>content</div> <div>content</div> <div>content</div> <div>content</div> </div> </div>
ОБНОВЛЕНИЕ
На основе приведенных здесь комментариев приведен конкретный случай, когда процентная высота работает без указания высоты в родительском элементе.
html, body { height: 100%; } .app { display: flex; height: 80%; } .menu { background-color: red; width: 100px; } .container{ flex: 1; background:green; } .test { height: 80%; border: 2px solid blue; }
<div class="app"> <div class="menu">menu</div> <div class="container"> <div class="test">percentage height is working here!! why??</div> </div> </div>
Как я объяснил в предыдущем ответе , высота
.container
не является явно установлен, но у нас нет циклической зависимости, потому что высота.container
определяется поведением растяжения, а не его содержимым, поэтому браузер может сначала установить высоту.container
с помощью stretch, а затем разрешить процентную высоту.test
элемент. [тысяча сто сорок две]Без эффекта растяжения браузер должен сначала найти высоту, основанную на контенте, и контент имеет высоту, основанную на контейнере, таким образом, у нас есть циклическая зависимость, которая сделает процентную высоту невыполненной до
auto
в чтобы можно было определить высоту контейнера.