2012-02-06 2 views
1

Я пытаюсь встроить элемент управления Silverlight в страницу JSF 2.0, которая использует Facelets, однако при получении страницы появляется очень неоднозначное сообщение об ошибке.Как встроить элемент управления 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 на JSP и устарел в JSF 2.x.

Что касается неоднозначного сообщения об ошибке, которое вы забыли включить в свой вопрос, убедитесь, что вы правильно выбрали XML special characters, например &. 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" 
+0

Спасибо, для этого и многих других почтовых отправлений, которые вы ответили. (Никогда не было возможности поблагодарить вас, так как они не были моими.) Я спустил все виды кроличьих отверстий, не понимая, что проблема не в том, что теги дословно, но функции javascript silverlight. Когда я удалил все из страницы, кроме стенографических и тегов объектов, тогда это сработало. И, как вы отметили, стенографические тэги не нужны, поэтому я их удалил. – Jerry

+0

И, btw ... Первоначально у меня была стек, но теперь, когда я смотрю на свое оригинальное сообщение, оно исчезло. Странно, это было там, когда я опубликовал. – Jerry

+0

Добро пожаловать. Я бы сказал, что это просто ошибка синтаксического анализа XML. Это также может произойти, когда вы добавляете некоторый JS-код в файл XML. JS имеет такие операторы, как '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'и т.д. Лучше всего просто поместить JS-код в свой собственный JS-файл, который вы включаете в ''. – BalusC

Смежные вопросы