Posted on 2007-06-03 10:58
小李飞刀 阅读(849)
评论(1) 编辑 收藏
在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只好把部分标签忽略了。