Почему этот компонент 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>

person Jonathan    schedule 08.02.2012    source источник
comment
Вы используете Facelets, а не JSP, поэтому не добавляйте тег JSP. Я удалил его.   -  person BalusC    schedule 08.02.2012


Ответы (1)


<h:commandLink>, похоже, не указывает ни на одну из существующих страниц. Вы установили его на bookDetails, но идентификатор целевого представления — 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>.

person BalusC    schedule 08.02.2012