Почему этот компонент Icefaces не позволяет моему приложению работать? - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть 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 Ответ

1 голос
/ 08 февраля 2012

<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>.

...