Вы можете использовать
для этого. При вложенности в входной компонент, такой как
, он по умолчанию будет вызываться при изменении входного значения. Вы можете указать метод listener
, который может предварительно заполнить данные для следующего компонента на основе текущего входного значения, и вы можете указать идентификатор клиента этого следующего компонента в render
, чтобы показать предварительно заполненные данные.
Боб должен быть, по крайней мере, в области видимости (не запрос):
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
private String country; // +getter+setter
private String city; // +getter+setter
private List countries; // +getter
private List cities; // +getter
@EJB
private LocationService locationService;
@PostConstruct
public void init() {
countries = locationService.getCountries();
}
public void changeCountry() {
cities = locationService.getCities(country);
}
// ...
}
Вы можете, конечно, также использовать Map
вместо List
. Ключ карты становится меткой опции, а значение карты становится значением параметра. Вам нужно только иметь в виду, что HashMap
по своей природе неупорядочен. Вы предпочитаете использовать LinkedHashMap
вместо этого, чтобы отображать элементы в порядке ввода Map
.
Мы также можем положиться на функцию браузера calc () в соответствии с: https://caniuse.com/#search=calc ()
$isize: 16px;
$psize: calc(#{$isize} - 2px);
input {
font-size: $isize;
}
p {
font-size: $psize;
}
Может быть, используете функцию?
SCSS
@function ratioDimensions($factor:1, $base-dimension:16, $unit:px) {
$calcSize: $base-dimension * $factor;
@return #{$calcSize}#{$unit};
}
И тогда вы можете использовать:
SCSS [ 115]
$isize: ratioDimensions(1);
$psize: ratioDimensions(1,16-2,px);
input {
font-size: $isize;
}
p {
font-size: $psize;
}