如何将Silverlight控件嵌入Facelets页面?

时间:2012-02-06 19:48:36

标签: silverlight jsf-2 facelets

我正在尝试将Silverlight控件嵌入到使用Facelets的JSF 2.0页面中,但是,当页面呈现时,我收到一条非常模糊的错误消息。

有谁能建议我怎么做?我有我的clientaccesspolicy.xml和silverlight.js。

当我删除<object>标记时,JSF页面会正确显示 如果我将<object>标记放入vanilla 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 :(得分:0)

删除<f:verbatim>。它是JSP上JSF 1.x的旧时代的遗留物,在JSF 2.x中被弃用。

对于您忘记在问题中添加的含糊不清的错误消息,请确保您&正确转发XML special characters。 Facelets是一种基于XML的视图技术,在生成HTML之前将由XML解析器进行解析。 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"