Trinidad發(fā)布了1.2.1版本,針對JSF1.2實現(xiàn)的組件,下載了Example,將jsf-impl.jar和jsf-api.jar(是SUN對JSF1.2的實現(xiàn))及其依賴包復(fù)制到WEB-INF/lib目錄下即可運行了.
參照這個Example就可以創(chuàng)建自己的JSF應(yīng)用了.
下面主要介紹一下trinidad 與facelets一起使用時我遇到的問題及解決方法:
主要是配置web.xml和faces-config.xml 可以參照https://facelets.dev.java.net/nonav/docs/dev/docbook.html#gettingstarted-setup-web這個文檔來配置facelets,后面附有完整的配置好的代碼。
需要注意的問題就是:
配置好的facelets后在faces-config.xml中有這樣一段代碼:
<application> <view-handler> com.sun.facelets.FaceletViewHandler </view-handler> </application>
在加入trinidad后這部分變?yōu)?
<application>
<default-render-kit-id>org.apache.myfaces.trinidad.core</default-render-kit-id>
<locale-config>
<default-locale>cn</default-locale>
<supported-locale>en</supported-locale>
</locale-config>
</application>
一定要將
<view-handler> com.sun.facelets.FaceletViewHandler </view-handler> 這段刪除才可以顯示出頁面。要不然會提示一個錯誤:
java.lang.IllegalStateException: No RenderingContext at org.apache.myfaces.trinidad.render.CoreRenderer.encodeBegin(CoreRenderer.java:156) at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeBegin(UIXComponentBase.java:704) at org.apache.myfaces.trinidad.component.UIXComponentBase.__encodeRecursive(UIXComponentBase.java:1267) at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeAll(UIXComponentBase.java:757) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:890) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:571) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:178) at org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:171) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:248)
web.xml(已經(jīng)配置好了JSF1.2(sun實現(xiàn))\facelets\spring)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns=" xmlns:xsi="
face-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns=" xmlns:xi=" xmlns:xsi="