`
bwlee
  • 浏览: 37460 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

如何在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只好把部分标签忽略了

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics