Как встроить элемент управления Silverlight в страницу Facelets? - PullRequest
1 голос
/ 06 февраля 2012

Я пытаюсь встроить элемент управления Silverlight на страницу JSF 2.0, которая использует Facelets, однако при отображении страницы я получаю очень неоднозначное сообщение об ошибке.

Кто-нибудь может подсказать, как я могу это сделать? У меня есть файл clientaccesspolicy.xml и silverlight.js.

Когда я удаляю тег <object>, страница JSF отображается правильно Если я помещу тег <object> на ванильную HTML-страницу, элемент управления silverlight правильно отображается в моем Tomcat 7.0.25.

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:cayman="http://www.fnet.com/cayman/jsf"
template="/WEB-INF/jsf/template.xhtml">

<ui:define name="title">Home Page</ui:define>

<ui:define name="content">

    <h:form>
        <ui:include src="header.xhtml">
            <ui:param name="loginBean" value="#{UserLoginComponent}" />
        </ui:include>
        <div>
            <p:growl />
        </div>
        <center>
            <p:panel header="Home Page">
                <f:verbatim escape="#{true}">
                    <object data="data:application/x-silverlight-2,"
                        type="application/x-silverlight-2" width="100%" height="100%">
                        <param name="source" value="Dashboard.xap" />
                        <a
                            href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0"
                            style="text-decoration: none"> <img
                                src="http://go.microsoft.com/fwlink/?LinkId=161376"
                                alt="Get Microsoft Silverlight" style="border-style: none" />
                        </a>
                    </object>
                </f:verbatim>
                <iframe id="_sl_historyFrame"
                    style="visibility: hidden; height: 0px; width: 0px; border: 0px"></iframe>
                <h:inputHidden id="userid" value="ADMINISTRATOR" />
                <h:inputHidden id="password" value="admin" />
                <h:inputHidden id="adminserviceuurl"
                    value="http://129.196.218.35:8080/cayman/services" />


            </p:panel>
        </center>
    </h:form>
</ui:define>

1 Ответ

0 голосов
/ 07 февраля 2012

Удалить <f:verbatim>.Это пережиток старой эпохи JSF 1.x в JSP и устаревший в JSF 2.x.

Что касается неоднозначного сообщения об ошибке, которое вы забыли включить в свой вопрос, убедитесь, что вы правильноэкранирование специальных символов XML подобно &.Facelets - это технология представления, основанная на XML, которая будет проанализирована анализатором XML перед генерацией HTML.Синтаксический анализатор XML захлебнется, когда встретит &, который должен представлять начало сущности, но нет ; для обозначения конца сущности или когда сама сущность вообще ничего не представляет.

Итак, замените

href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0"

на

href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=4.0.50826.0"
...