выполняется много onClick

#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 , например.