Интерпретация динамических атрибутов в JSP в Hybris

Я создал динамический атрибут для обработки видимости записей навигационного узла в соответствии со всеми соответствующими правилами Hybris. Мне удалось получить доступ к атрибуту в коде Java без каких-либо проблем, но я не мог заставить JSP интерпретировать его. Мой класс DynamicAttributeHandler работал без сбоев, но при чтении JSP произошел сбой. Это были шаги создания атрибута:

1) items.xml

<attribute qualifier = "navigationNodeVisibility" type = "java.lang.Boolean">
       <persistence type = "dynamic" attributeHandler = "navigationNodeVisibilityAttributeHandler"/>
       <modifiers read = "true" write = "false" search = "true"/>
       <defaultvalue>java.lang.Boolean.TRUE</defaultvalue>
</attribute>

2) NavigationNodeVisibilityAttributeHandler.java

@Override
public Boolean get(CMSNavigationNodeModel model) {
    if (model != null) {
        for(CMSNavigationEntryModel cmsNavigationEntry:model.getEntries()){
            if (cmsNavigationEntry.getItem() instanceof  CMSLinkComponentModel){
                CategoryModel category= ((CMSLinkComponentModel)cmsNavigationEntry.getItem()).getCategory();
                if ((category.getVisibility()== null || category.getVisibility() ) && ActiveProductStatus.ACTIVE == category.getActiveProductStatus()
                        && ManageCategoryByDateStatus.ACTIVE == category.getManageCategoryByDateStatus()){
                    return Boolean.TRUE;
                }
            }
        }
        return Boolean.FALSE;
    }
    return null;
}

3) Регистрация bean-компонента

<bean id = "navigationNodeVisibilityAttributeHandler" class = "com.inomera.hybris.core.handler.NavigationNodeVisibilityAttributeHandler" />

4) муравей очистить все && система обновлений муравьев

Всякий раз, когда я вызывал его в файле jsp, у меня появлялась ошибка типа «.. Произошло исключение при обработке страницы JSP ..»

<c:forEach items = "${component.navigationNode.children}" var = "cx">
    ${cx.navigationNodeVisibility}
</c:forEach>

Вызов атрибута таким образом не привел к возникновению исключения, но в моем случае необходимо использовать его в цикле for.

${component.navigationNode.children[0].navigationNodeVisibility}

Любая помощь или предложение будут очень признательны

Примечание. ${cx.getNavigationNodeVisibility()} выдал такое же исключение JSP.

Обновлено: пример исключения JSP

WARN  [hybrisHTTP14] [XXXXXXXXXXXX] [DefaultCMSComponentRendererRegistry] Error processing component tag. currentComponent [CategoryNavigationComponentModel (8796098036796@1)] exception: An exception occurred processing JSP page /WEB-INF/views/responsive/cms/categorynavigationcomponent.jsp at line 14

11: <nav id = "menu" style = "display: none;">
12:         <ul>
13:             <c:forEach items = "${component.navigationNode.children}" var = "childLevel1">
14:                 <c:if test = "${ childLevel1.visible eq 'true' && childLevel1.navigationNodeVisibility}">
15:                     <li>
16:                         <c:forEach items = "${childLevel1.entries}" var = "childEntry1" end = "1">
17:                             <c:if test = "${not empty childLevel1.children}">

Как выглядит исключение JSP?

dj_frunza 09.09.2018 07:40

Вы проверили, не является ли category нулевым в вашем обработчике атрибутов? Я предполагаю, что вы разрешаете только версию онлайн-каталога в своем интерфейсе, и если вы используете категорию из поэтапного каталога, вы получите нулевое значение.

Sukram 10.09.2018 09:19

Я понял, что вчера вечером некоторые категории, относящиеся к узлам навигации, были нулевыми. Я бы написал сюда, если бы была возможность днем. Ты со мной быстро. Да, это было полностью из-за того, что некоторые категории являются нулевыми.

Hatip Kabak 10.09.2018 10:10

@hatipkabak Не могли бы вы принять мой ответ ...

Sukram 11.09.2018 11:51
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
4
1 024
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы проверили, не является ли category нулевым в вашем обработчике атрибутов?

Я предполагаю, что вы разрешаете только версию онлайн-каталога в своем интерфейсе, и если вы используете категорию из поэтапного каталога, вы получите нулевое значение. Или, может быть, кто-то вообще забыл добавить категорию.

Другие вопросы по теме