h:commandLink无法按预期工作

时间:2014-03-19 11:39:23

标签: java html jsf

我遇到了一个问题,这反过来引起了很多麻烦。我需要动态创建链接到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获取的是Overriden 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只将consoleID打印到控制台,没有什么重要的。

感谢您抽出宝贵时间:)

1 个答案:

答案 0 :(得分:0)

这种方法是错误的,如果你这样做的话,那么#34;查看来源&#34;您将在页面源中看到<h:commandLink(因为它根本不会被JSF生命周期处理),而如果您的xhtml页面中有<h:commandLink,则生成的html源将包含<a href....>元素

你最好重新考虑一下你原来的目标并提出一个如何实现它的问题......