[jboss-user] [JBoss Seam] - Re: Ajax¤JSF with Seam
tobad
do-not-reply at jboss.com
Thu Jul 13 04:21:05 EDT 2006
Are you using Embedded Tomcat or JBoss?
I'm using Tomcat with the Embedded Container and it works very well.
This is my config
Web.xml (including tomahawk code)
Notice that I'am using the nekohtml based FastFilter for Ajax4Jsf
This means that you need to download NekoHtml from http://java-source.net/open-source/html-parsers/nekohtml
and probably Xerces
| <?xml version="1.0" encoding="UTF-8"?>
| <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
|
| <!-- Seam -->
|
| <listener>
| <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
| </listener>
|
| <!-- JSF -->
| <context-param>
| <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
| <param-value>client</param-value>
| </context-param>
|
| <context-param>
| <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
| <param-value>.html</param-value>
| </context-param>
|
| <context-param>
| <param-name>facelets.DEVELOPMENT</param-name>
| <param-value>true</param-value>
| </context-param>
|
| <context-param>
| <param-name>facelets.LIBRARIES</param-name>
| <param-value>/WEB-INF/tomahawk.taglib.xml</param-value>
| </context-param>
|
| <context-param>
| <param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION</param-name>
| <param-value>50</param-value>
| </context-param>
|
| <servlet>
| <servlet-name>Faces Servlet</servlet-name>
| <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
| <load-on-startup>1</load-on-startup>
| </servlet>
|
| <!-- Faces Servlet Mapping -->
|
| <servlet-mapping>
| <servlet-name>Faces Servlet</servlet-name>
| <url-pattern>*.jsf</url-pattern>
| </servlet-mapping>
|
| <servlet>
| <servlet-name>Seam Remoting</servlet-name>
| <servlet-class>org.jboss.seam.remoting.SeamRemotingServlet</servlet-class>
| </servlet>
|
| <servlet-mapping>
| <servlet-name>Seam Remoting</servlet-name>
| <url-pattern>/seam/remoting/*</url-pattern>
| </servlet-mapping>
|
| <!-- Seam filters -->
| <!-- Ajax4JSF Initial parameters -->
| <filter>
| <display-name>Ajax4jsf Filter</display-name>
| <filter-name>ajax4jsf</filter-name>
| <filter-class>org.ajax4jsf.FastFilter</filter-class>
| </filter>
| <filter-mapping>
| <filter-name>ajax4jsf</filter-name>
| <url-pattern>*.jsf</url-pattern>
| </filter-mapping>
| <filter-mapping>
| <filter-name>ajax4jsf</filter-name>
| <url-pattern>/faces/*</url-pattern>
| </filter-mapping>
|
| <context-param>
| <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
| <param-value>com.sun.facelets.FaceletViewHandler</param-value>
| </context-param>
| <context-param>
| <param-name>org.ajax4jsf.Filter</param-name>
| <param-value>org.ajax4jsf.FastFilter</param-value>
| </context-param>
|
|
|
| <!-- Propagate conversations across redirects -->
| <filter>
| <filter-name>Seam Redirect Filter</filter-name>
| <filter-class>org.jboss.seam.servlet.SeamRedirectFilter</filter-class>
| </filter>
|
| <filter-mapping>
| <filter-name>Seam Redirect Filter</filter-name>
| <url-pattern>*.jsf</url-pattern>
| </filter-mapping>
|
| <filter>
| <filter-name>Seam Servlet Filter</filter-name>
| <filter-class>org.jboss.seam.servlet.SeamServletFilter</filter-class>
| </filter>
|
| <filter-mapping>
| <filter-name>Seam Servlet Filter</filter-name>
| <url-pattern>/servlets/*</url-pattern>
| </filter-mapping>
|
| <!-- MyFaces -->
| <listener>
| <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
| </listener>
|
| <filter>
| <filter-name>ExtensionsFilter</filter-name>
| <filter-class>
| org.apache.myfaces.component.html.util.ExtensionsFilter
| </filter-class>
| <init-param>
| <param-name>uploadMaxFileSize</param-name>
| <param-value>10m</param-value>
| </init-param>
| <init-param>
| <param-name>uploadThresholdSize</param-name>
| <param-value>100k</param-value>
| </init-param>
| </filter>
| <filter-mapping>
| <filter-name>ExtensionsFilter</filter-name>
| <servlet-name>Faces Servlet</servlet-name>
| </filter-mapping>
| <filter-mapping>
| <filter-name>ExtensionsFilter</filter-name>
| <url-pattern>*.jsf</url-pattern>
| </filter-mapping>
| <filter-mapping>
| <filter-name>ExtensionsFilter</filter-name>
| <url-pattern>/faces/*</url-pattern>
| </filter-mapping>
| </web-app>
|
faces-config.xml
| <?xml version="1.0" encoding="UTF-8"?>
| <!DOCTYPE faces-config
| PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
| "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
|
| <faces-config>
|
| <converter>
| <converter-id>org.joda.ext.jsf.converter.DateTime</converter-id>
| <converter-class>org.joda.ext.jsf.converter.DateTimeConverter</converter-class>
| </converter>
|
| <lifecycle>
| <phase-listener>org.jboss.seam.jsf.SeamExtendedManagedPersistencePhaseListener</phase-listener>
| </lifecycle>
|
| </faces-config>
|
tomahawk.taglib.xml
| <?xml version="1.0"?>
| <!DOCTYPE facelet-taglib PUBLIC
| "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
| "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
|
| <facelet-taglib>
| <namespace>http://myfaces.apache.org/tomahawk</namespace>
| <tag>
| <tag-name>aliasBean</tag-name>
| <component>
| <component-type>org.apache.myfaces.AliasBean</component-type>
| <renderer-type>org.apache.myfaces.AliasBean</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>buffer</tag-name>
| <component>
| <component-type>org.apache.myfaces.Buffer</component-type>
| <renderer-type>org.apache.myfaces.Buffer</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>checkbox</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlCheckbox</component-type>
| <renderer-type>org.apache.myfaces.Checkbox</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlCheckboxTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>collapsiblePanel</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlCollapsiblePanel</component-type>
| <renderer-type>org.apache.myfaces.CollapsiblePanel</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlCollapsiblePanelTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>column</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlColumn</component-type>
| </component>
| </tag>
| <tag>
| <tag-name>columns</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlColumns</component-type>
| </component>
| </tag>
| <tag>
| <tag-name>commandButton</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlCommandButton</component-type>
| </component>
| </tag>
| <tag>
| <tag-name>commandLink</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlCommandLink</component-type>
| <renderer-type>org.apache.myfaces.Link</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>commandNavigation</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlCommandNavigation</component-type>
| <renderer-type>javax.faces.Link</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>commandSortHeader</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlCommandSortHeader</component-type>
| <renderer-type>org.apache.myfaces.SortHeader</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlCommandSortHeaderTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>dataList</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlDataList</component-type>
| <renderer-type>org.apache.myfaces.List</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlDataListTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>dataScroller</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlDataScroller</component-type>
| <renderer-type>org.apache.myfaces.DataScroller</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlDataScrollerTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>dataTable</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlDataTable</component-type>
| <renderer-type>org.apache.myfaces.Table</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlDataTableTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>date</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlInputDate</component-type>
| <renderer-type>org.apache.myfaces.Date</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>div</tag-name>
| <component>
| <component-type>org.apache.myfaces.Div</component-type>
| </component>
| </tag>
| <tag>
| <tag-name>graphicImage</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlGraphicImage</component-type>
| <renderer-type>org.apache.myfaces.Image</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>htmlTag</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlTag</component-type>
| <renderer-type>org.apache.myfaces.HtmlTagRenderer</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>inputCalendar</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlInputCalendar</component-type>
| <renderer-type>org.apache.myfaces.Calendar</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlInputCalendarTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>inputDate</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlInputDate</component-type>
| <renderer-type>org.apache.myfaces.Date</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>inputFileUpload</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlInputFileUpload</component-type>
| <renderer-type>org.apache.myfaces.FileUpload</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlInputFileUploadTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>inputHidden</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlInputHidden</component-type>
| <renderer-type>javax.faces.Hidden</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>inputHtml</tag-name>
| <component>
| <component-type>org.apache.myfaces.InputHtml</component-type>
| <renderer-type>org.apache.myfaces.InputHtml</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>inputSecret</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlInputSecret</component-type>
| <renderer-type>org.apache.myfaces.Secret</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlInputSecretTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>inputText</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlInputText</component-type>
| <renderer-type>org.apache.myfaces.Text</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlInputTextTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>inputTextarea</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlInputTextarea</component-type>
| <renderer-type>org.apache.myfaces.Textarea</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlInputTextareaTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>inputTextHelp</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlInputTextHelp</component-type>
| <renderer-type>org.apache.myfaces.TextHelp</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlInputTextHelpTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>jscookMenu</tag-name>
| <component>
| <component-type>org.apache.myfaces.JSCookMenu</component-type>
| <renderer-type>org.apache.myfaces.JSCookMenu</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>jsValueChangeListener</tag-name>
| <component>
| <component-type>org.apache.myfaces.JsValueChangeListener</component-type>
| <renderer-type>org.apache.myfaces.JsValueChangeListener</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>jsValueSet</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlJsValueSet</component-type>
| <renderer-type>org.apache.myfaces.JsValueSet</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>layout</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlPanelLayout</component-type>
| <renderer-type>org.apache.myfaces.Layout</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>message</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlMessage</component-type>
| <renderer-type>org.apache.myfaces.Message</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>messages</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlMessages</component-type>
| <renderer-type>org.apache.myfaces.Messages</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>navigationMenuItem</tag-name>
| <component>
| <component-type>org.apache.myfaces.NavigationMenuItem</component-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlNavigationMenuItemTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>navigationMenuItems</tag-name>
| <component>
| <component-type>org.apache.myfaces.NavigationMenuItem</component-type>
| </component>
| </tag>
| <tag>
| <tag-name>newspaperTable</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlNewspaperTable</component-type>
| <renderer-type>org.apache.myfaces.HtmlNewspaperTable</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>panelGrid</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlPanelGrid</component-type>
| <renderer-type>javax.faces.Grid</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlPanelGridTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>panelGroup</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlPanelGroup</component-type>
| <renderer-type>javax.faces.Group</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlPanelGroupTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>panelNavigation</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlPanelNavigation</component-type>
| <renderer-type>org.apache.myfaces.Navigation</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>panelStack</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlPanelStack</component-type>
| <renderer-type>org.apache.myfaces.PanelStack</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>panelTab</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlPanelTab</component-type>
| <renderer-type>javax.faces.Group</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>panelTabbedPane</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlPanelTabbedPane</component-type>
| <renderer-type>org.apache.myfaces.TabbedPane</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlPanelTabbedPaneTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>popup</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlPopup</component-type>
| <renderer-type>org.apache.myfaces.Popup</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlPopupTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>radio</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlRadio</component-type>
| <renderer-type>org.apache.myfaces.Radio</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlRadioTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>saveState</tag-name>
| <component>
| <component-type>org.apache.myfaces.SaveState</component-type>
| </component>
| </tag>
| <tag>
| <tag-name>selectBooleanCheckbox</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlSelectBooleanCheckbox</component-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlSelectBooleanCheckboxTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>selectManyCheckbox</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlSelectManyCheckbox</component-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlSelectManyCheckboxTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>selectManyListbox</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlSelectManyListbox</component-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlSelectManyListboxTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>selectManyMenu</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlSelectManyMenu</component-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlSelectManyMenuTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>selectOneCountry</tag-name>
| <component>
| <component-type>org.apache.myfaces.SelectOneCountry</component-type>
| <renderer-type>org.apache.myfaces.SelectOneCountry</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>selectOneLanguage</tag-name>
| <component>
| <component-type>org.apache.myfaces.SelectOneLanguage</component-type>
| <renderer-type>org.apache.myfaces.SelectOneLanguage</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>selectOneListbox</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlSelectOneListbox</component-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlSelectOneListboxTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>selectOneMenu</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlSelectOneMenu</component-type>
| <renderer-type>org.apache.myfaces.Menu</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlSelectOneMenuTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>selectOneRadio</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlSelectOneRadio</component-type>
| <handler-class>com.skalasoft.facelets.tags.generated.HtmlSelectOneRadioTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>stylesheet</tag-name>
| <component>
| <component-type>org.apache.myfaces.Stylesheet</component-type>
| <renderer-type>org.apache.myfaces.Stylesheet</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>swapImage</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlSwapImage</component-type>
| <renderer-type>org.apache.myfaces.SwapImage</renderer-type>
| </component>
| </tag>
| <tag>
| <tag-name>tree2</tag-name>
| <component>
| <component-type>org.apache.myfaces.HtmlTree2</component-type>
| <renderer-type>org.apache.myfaces.HtmlTree2</renderer-type>
| <handler-class>com.skalasoft.facelets.tags.generated.TreeTagHandler</handler-class>
| </component>
| </tag>
| <tag>
| <tag-name>validateCreditCard</tag-name>
| <validator>
| <validator-id>org.apache.myfaces.validator.CreditCard</validator-id>
| </validator>
| </tag>
| <tag>
| <tag-name>validateEmail</tag-name>
| <validator>
| <validator-id>org.apache.myfaces.validator.Email</validator-id>
| </validator>
| </tag>
| <tag>
| <tag-name>validateEqual</tag-name>
| <validator>
| <validator-id>org.apache.myfaces.validator.Equal</validator-id>
| </validator>
| </tag>
| <tag>
| <tag-name>validateRegExpr</tag-name>
| <validator>
| <validator-id>org.apache.myfaces.validator.RegExpr</validator-id>
| </validator>
| </tag>
| </facelet-taglib>
|
And then I import Ajax4Jsf into my page with
| <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:s="http://jboss.com/products/seam/taglib"
| xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
| xmlns:t="http://myfaces.apache.org/tomahawk">
|
If you have any more questions feel free to send me an email or ask here for everyones benefit.
Cheers
Tobias
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3957651#3957651
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3957651
More information about the jboss-user
mailing list