Вы можете поместить h: outputLink в h: commandButton? - PullRequest
0 голосов
/ 14 января 2019

Мне нужна кнопка, которая возвращает пользователя на определенную страницу, и для этого я поместил h: outputLink внутри h: commandButton, как показано ниже:

  <h:commandButton styleClass="richButtonLogout">
   <h:outputLink value="/pages/somePage.xhtml">
 SomePage
</h:outputLink>

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

1 Ответ

0 голосов
/ 14 января 2019

Нет, вы не можете поместить outputLink внутрь commandButton. Это отдельные компоненты, не связанные или не зависящие друг от друга.

Если вы хотите, чтобы кнопка функционировала как ссылка, вы можете использовать компонент h:button JSF в сочетании с атрибутом outcome, например,

<h:button outcome="..."/>

Обратите внимание, что, хотя он действительно работает, компонент JSF button использует JavaScript для достижения этой навигации - так что это не обычная ссылка, как вы ожидаете. Поскольку это результаты навигации (а не ссылки), одним из преимуществ этого метода является то, что вы можете использовать статические результаты и динамически определять свои правила навигации в faces-config.xml.

Очевидно, что для получения простой старой ссылки вы также можете просто использовать обычный <a href="..."> с соответствующим стилем кнопок для достижения того же конечного результата.

...