В hybris есть несколько функций, которые используют uid внутри представления. Например, SearchPageController
. Чтобы быть более точным c, давайте посмотрим на этот метод:
private static final String COMPONENT_UID_PATH_VARIABLE_PATTERN = "{componentUid:.*}";
...
@ResponseBody
@RequestMapping(value = "/autocomplete/" + COMPONENT_UID_PATH_VARIABLE_PATTERN, method = RequestMethod.GET)
public AutocompleteResultData getAutocompleteSuggestions(...){
final SearchBoxComponentModel component = (SearchBoxComponentModel) cmsComponentService.getSimpleCMSComponent(componentUid);
}
Фактическое значение COMPONENT_UID_PATH_VARIABLE_PATTERN
находится в searchboxcomponent.jsp
:
<spring:url value="/search/autocomplete/{/componentuid}" var="autocompleteUrl" htmlEscape="false">
<spring:param name="componentuid" value="${component.uid}"/>
</spring:url>
Как это Работа? Каждый раз, когда вы что-то вводите, выполняется вызов этой конечной точки с извлечением uid компонента с использованием ${component.uid}
.
Почему это работает? Давайте посмотрим на productLayout1Page.jsp
и возьмем оттуда простой тег:
<cms:pageSlot position="CrossSelling" var="comp" element="div" class="productDetailsPageSectionCrossSelling">
<cms:component component="${comp}" element="div" class="productDetailsPageSectionCrossSelling-component"/>
</cms:pageSlot>
Теперь мы видим, что есть тег <cms:component component=${..}.../>
, который ссылается на экземпляр компонента, и вы можете получить к нему доступ, используя ${component.attributeName}
внутри компонента jsp.