JSF, как использовать EL в onclick - PullRequest
0 голосов
/ 22 июня 2009

Я хочу создать ссылки, используя столбцы базы данных. У меня есть компонент поддержки, где я подключаюсь к базе данных. Нет проблем с подключением, а также с именами ссылок. Я вижу свои ссылки в своем браузере. Я хочу использовать функцию onclick, и именно здесь начинается проблема. Как я могу использовать или я могу использовать EL в onclick?

Небольшой пример:

<h:dataTable rows="7" value="#{frontSiteMenu.links}" var="row"
    styleClass="sitemenu" width="200">
    <h:column>
        <a href="#" onclick="dispNewsGroup('${row.newsGroupId}')"><h:outputText value='#{row.newsGroup}' /></a>
    </h:column>
</h:dataTable>

Спасибо.

1 Ответ

5 голосов
/ 22 июня 2009

Я так понимаю, вы используете JSP?

Используйте h: outputLink вместо тега a и измените выражение, используя символ #:

<h:outputLink value="#" onclick="dispNewsGroup('#{row.newsGroupId}')">
    <h:outputText value='#{row.newsGroup}' />
</h:outputLink>

Это не проверено, но должно быть близко к тому, что вы хотите.

Спецификация говорит это о # против $:

... по соглашению J2EE спецификации веб-уровня используют $ {expr} конструкция для немедленного оценка и конструкция # {expr} для отложенной оценки.

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

Существуют также проблемы с использованием тегов, не являющихся JSF, в качестве дочерних элементов некоторых элементов управления JSF, поэтому лучше по возможности придерживаться элементов управления JSF (хотя есть тег f: дословно ). Многие из этих проблем исчезнут, если вы перейдете на новую технологию просмотра Facelets.

...