2012-02-06 67 views
1

我想将Silverlight控件嵌入到使用Facelets的JSF 2.0页面中,但是,当页面呈现时,我收到了非常模糊的错误消息。如何将Silverlight控件嵌入到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> 

回答

0

删除<f:verbatim>。这是来自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" 
+0

谢谢你,为你已经回答了这个和其他许多张贴。 (从来没有机会感谢你,因为他们不是我的。) 我去了各种兔子洞,没有意识到问题不是逐字标签,而是silverlight javascript函数。当我除了逐字和对象标签以外的所有内容都被剥离了,然后它就起作用了。而且,正如您所注意到的,逐字标记不是必需的,所以我已经将它们删除了。 – Jerry 2012-02-07 17:47:34

+0

而且,顺便说一句...最初我有一个堆栈跟踪,但现在我看着我原来的帖子,它已经消失了。奇怪的是,当我发布时,它就在那里。 – Jerry 2012-02-07 17:49:38

+0

不客气。我敢打赌它只是一个XML解析错误。当您将一些JS代码包含在XML文件中时,也会发生这种情况。 JS有像'&','<'等运算符,它们在嵌入XML时需要被转义。最好的办法就是将JS代码放入自己的JS文件中,该文件由包含。 – BalusC 2012-02-07 17:53:01

相关问题