为什么这个Icefaces组件不允许我的应用程序工作?

时间:2012-02-08 16:36:13

标签: java jsf icefaces

我有一个列出书籍的index.xhtml页面。单击一本书后,它会转到book.xhtml以显示该书的特定详细信息。有用。但是对于我的项目,我的意思是使用Icefaces。当我添加Iceface组件ice:panelTabSet时,book.xhtml点击index.xhtml上的链接将不再重定向到book.xhtml。任何人都可以对此有所了解吗?

的index.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>BookShop</title>

    </h:head>
    <h:body>

        <h:form>
       <ul>
    <ui:repeat value="#{bookCatelogBean.books}" var="book">
        <li>
            <h:commandLink action="bookDetails">#{book.title}
                <f:param name="id" value="#{book.id}" />
            </h:commandLink>
        </li>
    </ui:repeat>
</ul>
        </h:form>

    </h:body>
</html>

book.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ice="http://www.icesoft.com/icefaces/component">
    <h:head>
        <title>BookShop</title>

    </h:head>
    <h:body>

        #{book.title}

        <h:graphicImage id="image1" value="#{book.coverImage}" /> 

        #{book.description}

        <ice:panelTabSet styleClass="tabSet" tabPlacement="bottom" align="right">
            <ice:panelTab label="label1"> 
                <ice:outputText value="Label" />
            </ice:panelTab>
            <ice:panelTab label="label2"> 
                <ice:outputText value="Label2" />
            </ice:panelTab>
            <ice:panelTab label="label3">
                <ice:outputText value="Label3" /> 
            </ice:panelTab>
        </ice:panelTabSet>
    </h:body>
</html>

1 个答案:

答案 0 :(得分:1)

<h:commandLink>似乎没有指向任何现有页面。您已将其设置为bookDetails,但目标视图ID为book(来自book.xhtml)。你也不需要在这里发布POST,它只会使搜索机器人无法抓取这些链接,并且最终用户无法进行指定。

改为使用<h:link>并将其outcome设置为book而不是bookDetails

<h:link value="#{book.title}" outcome="book">
    <f:param name="id" value="#{book.id}" />
</h:link>

不要忘记删除<h:form>