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....>
элемент
Вам лучше переосмыслить свою первоначальную цель и задать вопрос о том, как ее достичь...