JSF и richfaces: h:commandlink в richfaces таблице, не работающей правильно

При использовании h:commandlink (или кнопка) в rich:dataTable, никогда не вызывается указанное действие, ни один не соответствующий управляемый компонент, который инстанцируют (является ли это в запросе или объеме сессии)... вместо этого, тот же запрос выполняется.. (перезагрузки страницы).. видели то, что, казалось, было подобной проблемой о форумах, но не является на самом деле проблемой, которую я имею.. h:commandlink / работа кнопки хорошо за пределами rich:datatable..

У кого-либо есть совет?

вот фрагмент кода:

    <h:commandLink id="commLink" actionListener="#{hBean.test}" action="#{hBean.viewTranslation}">
        <h:outputText value="#{trans.translationName}"/>   
    </h:commandLink>
</rich:column>
1
задан user414597 8 August 2010 в 23:31
поделиться

2 ответа

По-видимому, боб привязан к запросу, и модель данных не загружается во время построения боба (по крайней мере, на этапе применения значений запроса для последующего запроса). Вам необходимо сохранить ту же самую модель данных для последующего запроса, иначе JSF не сможет найти элемент строки, связанный с нажатой ссылкой. Самый простой способ - загрузить модель данных в конструктор боба или метод @PostConstruct.

Быстрое решение/тест - поместить bean в область видимости сессии. Тогда модель данных будет сохранена в области видимости сессии и будет доступна при последующем запросе. Но это больше влияет на пользовательский опыт (например, неожиданные результаты при открытии одной и той же страницы в разных окнах/вкладках браузера в одной и той же сессии). Если вы уже перешли на JSF 2.0 (что, скорее всего, не так, поскольку вы используете RichFaces), то новая область видимости была бы решением.

Связанные вопросы:

2
ответ дан 2 September 2019 в 22:20
поделиться

спасибо BalusC за ответ. На самом деле в моем случае все не так просто, потому что я использую Spring в связке с JSF и мой dataList построен в аннотированном контроллере Spring, поэтому для того, чтобы сделать его известным jsf backing bean, мне пришлось сделать bean известным и Spring, и jsf. Однако ваш ответ помог мне найти решение - мне не только нужно разделить мой bean между spring и jsf, но также нужно сделать spring контроллер областью видимости сессии... возможно, это не самое лучшее решение, но пока работает...
Я не использовал jsf до моего последнего проекта и должен сказать, что я не доволен тем, что он требует так тесно придерживаться своей архитектуры - это несколько затрудняет слияние spring и jsf

0
ответ дан 2 September 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: