如何在Facelets中使用Tomhawk sandbox?

在Tomahawk成功部署后,出于对界面的优化和增加一些功能亮点的需要,我开始考虑使用一些sandbox中的控件,本来按理说一切都应该很顺利的,毕竟在此之前大部分问题都已经按部就班地做过了一遍,所有要改动的东西、以及哪些部分是做什么用的都已经清楚了,但结果还是出乎我的意料。

    先说说这个意外的结果吧,含sandbox 组件的页面能够显示但没有相应的效果,sandbox的组件看起来好像被忽略了,查看html源码可知很多sandbox标签没有被正确解析,另外没有任何错误或警告信息,无论在页面还是在log中都没有发现任何有用线索,额外加用facestrace也没找到什么错误。

    配置步骤如下:
    1. 下载tomahawk-sandbox包,我先后试过两个版本:1.1.5   和 1.1.6-snapshot
    2. 下载了facelets主站上的sandbox taglib文件,并且根据sandbox源码仔细核对修改过,确信没有了错误。
    3. 修改web.xml,在context-param 中为facelets.LIBRARIES,增加了相应的taglib.xml,最终信息像下面这样
  < context-param >
  
< param-name > facelets.LIBRARIES </ param-name >
  
< param-value > /WEB-INF/tomahawk.taglib.xml;/WEB-INF/sandbox.taglib.xml;/WEB-INF/jsf-comp-chart.taglib.xml;/WEB-INF/facestrace.taglib.xml </ param-value >
 
</ context-param >
    以上配置中,除了sandbox,其他一切正常,另外还用了Ajax4JSF,但不管是否去掉它,对结果都没有影响,已试验过,不必再考虑这个因素。

    4. 在测试页面中增加了namespace支持,加了点代码用到sandbox, 片断如下:

< t:document        xmlns:t ="http://myfaces.apache.org/tomahawk"
     xmlns:s
="http://myfaces.apache.org/sandbox"
..
>
<!--  effect by dojo  -->
< s:effect  id ="effect1"  fade ="true" >
< h:outputText  value ="Hello We hope you enjoy Apache MyFaces and the effects by DOJO and script.aculo.us"   />
</ s:effect >
<!--   input focus  -->
< h:panelGrid  columns ="2" >
   
< h:outputLabel  for ="input1"  value ="Input1: " />
   
< h:inputText  id ="input1" />
   
< h:outputLabel  for ="input2"  value ="Input2: " />
   
< h:inputText  id ="input2" />
   
< s:focus  id ="focus"  for ="input2"   />
</ h:panelGrid >
<!--   input suggest  -->
< s:inputSuggest  value ="#{user.state.key}"  required ="true" >
   
< f:selectItems  value ="#{choices}" />
</ s:inputSuggest >

    5.并且在加入sandbox后,把以前的tomahawk-facelets.jar也从/WEB-INF/lib目录下删除试过,不删除时有冲突提示,但就sandbox控件的显示而言,结果是一样的,“没有!”

有谁能有比较好的解决方案,还是我漏掉了什么重要的步骤,请不吝指教,非常感谢!

另,希望上述这些配置方法对需要进行tomahawk,facestrace, jsf-comp在facelets中配置的人有些帮助!

问题找到了,因为sandbox.taglib.xml中有错误,导致faceletViewHandler.initializeCompiler失败,从而使用 xmlns:s ="http://myfaces.apache.org/sandbox能被识别,但里面的TagLibConfig却没有正确的内容,这样facelet只好把部分标签忽略了

你可能感兴趣的:(如何在Facelets中使用Tomhawk sandbox?)