Woodstock and Seam on JBoss with Facelets, JSF 1.2
mgrouch Mar 10, 2007 7:23 PMI'm trying to configure Seam to use Woodstock on JBoss with Facelets, JSF 1.2. Has anyone used this combo? I've got simple page rendered with Woodstock. However I'm having troubles with invoking actions.
19:14:57,984 ERROR [ExceptionFilter] exception root cause java.lang.UnsupportedOperationException at org.jboss.seam.Namespace.entrySet(Namespace.java:23) at java.util.AbstractMap.toString(AbstractMap.java:584) at java.lang.String.valueOf(String.java:2615) at java.lang.StringBuilder.append(StringBuilder.java:116) at com.sun.webui.jsf.faces.UIComponentELResolver.getValue(UIComponentELResolver.java:72) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143) at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64) at com.sun.el.parser.AstValue.getValue(AstValue.java:117) at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:192) at com.sun.faces.application.ValueBindingValueExpressionAdapter.getValue(ValueBindingValueExpressionAdapter.java:102) at org.jboss.seam.core.Expressions$1.getValue(Expressions.java:57) at org.jboss.seam.Component.getInstanceFromFactory(Component.java:1683) at org.jboss.seam.Component.getInstance(Component.java:1632) at org.jboss.seam.Component.getInstance(Component.java:1609) at org.jboss.seam.Component.getInstance(Component.java:1603) at org.jboss.seam.jsf.SeamELResolver.getValue(SeamELResolver.java:49) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143) at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:65) at com.sun.el.parser.AstValue.getValue(AstValue.java:106) at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:192) at org.jboss.seam.util.UnifiedELValueBinding.getValue(UnifiedELValueBinding.java:34) at org.jboss.seam.security.Identity.evaluateExpression(Identity.java:506) at org.jboss.seam.security.Identity.checkRestriction(Identity.java:149) at org.jboss.seam.interceptors.SecurityInterceptor.aroundInvoke(SecurityInterceptor.java:35) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69) at org.jboss.seam.interceptors.RemoveInterceptor.aroundInvoke(RemoveInterceptor.java:40) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:69) at org.jboss.seam.interceptors.SynchronizationInterceptor.aroundInvoke(SynchronizationInterceptor.java:31)
As a first step I reconfigured Seam booking demo with Sun JSF 1.2 using instructions from here http://www.jboss.com/index.html?module=bb&op=viewtopic&t=94738
I was able to get booking demo running with Sun's JSF 1.2 on JBoss 4.0.5.GA.
After that I added woodstock.taglib.xml from http://blogs.steeplesoft.com/wp-content/uploads/2007/02/woodstock.taglib.xml
into booking-demo WEB-INF, then I modified web.xml:
<!-- Woodstock --> <context-param> <param-name>com.sun.webui.jsf.DEFAULT_THEME</param-name> <param-value>suntheme</param-value> </context-param> <context-param> <param-name>facelets.LIBRARIES</param-name> <param-value>/WEB-INF/woodstock.taglib.xml</param-value> </context-param> ... <!-- Theme Servlet --> <servlet> <servlet-name>ThemeServlet</servlet-name> <servlet-class>com.sun.webui.theme.ThemeServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> ... <!-- Theme Servlet Mapping --> <servlet-mapping> <servlet-name>ThemeServlet</servlet-name> <url-pattern>/theme/*</url-pattern> </servlet-mapping> ... <!-- JSF RI --> <listener> <listener-class>com.sun.faces.config.ConfigureListener</listener-class> </listener>
Added jars
dataprovider.jar
dojo-0.4.1-ajax.jar
jhall.jar
jsf-extensions-common-0.1.jar
jsf-extensions-dynamic-faces-0.1.jar
json.jar
prototype-1.5.0.jar
webui-jsf.jar
webui-jsf-suntheme.jar
into JBoss deploy\jbossweb-tomcat55.sar\jsf-libs directory
My other config files
application.xml
<?xml version="1.0" encoding="UTF-8"?> <application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5"> <display-name>Seam Booking</display-name> <module> <web> <web-uri>jboss-seam-booking.war</web-uri> <context-root>/seam-booking</context-root> </web> </module> <module> <ejb>jboss-seam-booking.jar</ejb> </module> <module> <java>jboss-seam.jar</java> </module> </application>
faces-config.xml
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> <application> <el-resolver>org.jboss.seam.jsf.SeamELResolver</el-resolver> </application> <lifecycle> <phase-listener>org.jboss.seam.jsf.SeamPhaseListener</phase-listener> </lifecycle> </faces-config>
I've added a page with a table. This page renders fine by accessing
http://localhost:8080/seam-booking/woodstock.seam
woodstock.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:risb="http://java.sun.com/jsf/ri/sandbox" xmlns:webuijsf="http://www.sun.com/webui/webuijsf" xmlns:s="http://jboss.com/products/seam/taglib"> <f:view> <webuijsf:head> <webuijsf:link url="/style.css"/> </webuijsf:head> <webuijsf:body id="body"> <webuijsf:form id="form"> <webuijsf:button id="callAction" text="Action" action="#{hotelSearch.find}" /> <webuijsf:table id="table" ... </webuijsf:table> </webuijsf:form> </webuijsf:body> </f:view> </html>
Any ideas how to make actions work on a form?
Thanks,
--MG