h:commandLink не работает должным образом

У меня есть проблема, которая в свою очередь вызывает много головных болей. Мне нужно динамически создавать кнопки / изображения, которые ссылаются на JSF actionListener. Вот код:

HTML:

<h:form>
  <div class="carousel-container">
    <div id="carousel">
      <h:outputText value="#{courseBean.course}" escape="false"/>
    </div>
  </div>
</h:form>

то, что получает courseBean.course, является переопределенной строкой toString, которая возвращает следующее:

@Override
public String toString() {

    return "<div class=\"carousel-feature\"> "
            + "<h:commandLink id=\"" + courseID + "\" actionListener=\"#{courseBean.getCourseSelected}\">"
            + "<img class=\"carousel-image\" src=\"Images/testButton.jpg\"/>"
            + "<span style=\"display:bloack; position:absolute; top:20px; bottom:20px; left:0; right:0; "
            + "background:white; background:rgba(255, 255, 255, 0.25);\">" + courseName + "</span>"
            + "</h:commandLink> "
            + "<div class=\"carousel-caption\"> "
            + "</div>"
            + "</div>";
}//end method toString

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

edit: actionListener печатает только courseID на консоль, ничего особенного.

Спасибо, что нашли время:)

1 ответ

Такой подход неверен, если вы сделаете "просмотр источника", вы увидите <h:commandLink в источнике вашей страницы (потому что он вообще не будет обрабатываться жизненным циклом JSF), а если у вас <h:commandLink на вашей HTML-странице сгенерированный HTML-источник будет содержать <a href....> элемент

Вам лучше переосмыслить свою первоначальную цель и задать вопрос о том, как ее достичь...

Другие вопросы по тегам