我有一个问题,它反过来又引起了很多头痛。我需要动态地创建链接到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 gets是重写的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没有被调用,这就是这里的问题。
编辑:actionListener只打印courseID到控制台没什么大不了的。
感谢您的宝贵时间。
这种方法是错误的,如果您执行"查看源代码",您将在页面的源代码中看到<h:commandLink
(因为它根本不会被JSF生命周期处理),而如果您在xhtml页面中有<h:commandLink
,则生成的html源代码将包含<a href....>
元素
你最好重新考虑你最初的目标,并问一个如何实现它的问题。