#html #jsf #primefaces
#HTML #jsf #простые
Вопрос:
Мой код выглядит следующим образом:
<p:layoutUnit position="west" resizable="false" collapsible="true" style="color: #ccc;padding-left: 50px;border-right-color: yellowgreen;border-left: none;border-bottom: none;border-top-color: yellowgreen;" >
<h:link value="Sport" styleClass="link" outcome="products" onclick="#{acount.rechercherLivreByTheme('Sport')}">
<f:param name="nom" value="Art" />
</h:link><br/>
<h:link value="Informatique" styleClass="link" outcome="products" onclick="#{acount.rechercherLivreByTheme('Informatique')}">
<f:param name="nom" value="Informatique" />
</h:link><br/>
</p:layoutUnit>
Проблема в том, что когда я нажимаю на одну ссылку, выполняются 2 метода, как если бы я щелкнул по двум ссылкам.
Редактировать
Что я обнаружил, просмотрев мой полный код, так это то, что все мои onClick выполняются, у меня проблема с размещением тега формы в правильном месте
Как мы можем использовать тег формы, если у нас много кнопок со многими макетами?
Комментарии:
1. Выражение метода не должно помещаться в
onclick
.commandLink
Вместо этого используйте a и поместите выражение вашего метода вaction
атрибут командной строки2. большое спасибо, теперь это работает
Ответ №1:
onclick
для кода JavaScript, который будет выполняться onclick. Поэтому JSF необходимо отобразить содержимое этого атрибута перед отправкой его в браузер (поэтому весь EL-код выполняется при рендеринге). Это не событие, которое будет сгенерировано на стороне сервера.
Вероятно, вы ищете action
или actionListener
оба доступны с другими компонентами JSF, такими как h:commandLink
, например.