jsf с richfaces 3, ajax4jsf не работает - PullRequest
0 голосов
/ 27 марта 2012

Я использую JSF с richfaces3.3.3, другие возможности jsf работают, но я не знаю, почему не работает ajax, например,

Ниже приводится кнопка команды ajax, которая не выдает ошибку, не генерирует ошибку

<a4j:commandButton value="Say Hello" render="out"/>

может быть, это связано с фильтром ajax4sf, но у меня есть фильтр, почему он не может перехватить запрос jsf?

Нужно ли использовать myfaces для работы с ajax4jsf?

Ниже приведен мой web.xml и остальной код.

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 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-app_2_5.xsd">
     <description>Sample application</description>
     <display-name>richfaces-start</display-name>

      <context-param>
      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
      <param-value>.xhtml</param-value>
     </context-param>

     <context-param>
      <param-name>facelets.REFRESH_PERIOD</param-name>
      <param-value>2</param-value>
     </context-param>
     <context-param>
      <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
      <param-value>server</param-value>
     </context-param>
     <context-param>
      <param-name>org.richfaces.SKIN</param-name>
      <param-value>blueSky</param-value>
     </context-param>

     <filter>
      <display-name>Ajax4jsf Filter</display-name>
      <filter-name>ajax4jsf</filter-name>
      <filter-class>org.ajax4jsf.Filter</filter-class>
     </filter>

     <filter-mapping>
      <filter-name>ajax4jsf</filter-name>
      <servlet-name>Faces Servlet</servlet-name>
      <dispatcher>REQUEST</dispatcher>
      <dispatcher>FORWARD</dispatcher>
      <dispatcher>INCLUDE</dispatcher>
     </filter-mapping>

     <listener>
       <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>


     <servlet>
      <servlet-name>Faces Servlet</servlet-name>
      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
      <servlet-name>Faces Servlet</servlet-name>
      <url-pattern>*.jsf</url-pattern>
     </servlet-mapping>
     <login-config>
      <auth-method>BASIC</auth-method>
     </login-config>

    </web-app>
------------
start.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:h="http://java.sun.com/jsf/html"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">

  <head><title>RichFaces</title></head>

  <body>

    <rich:panel header="RichFaces">
        <h:outputText value="Hello, looks like it's working" />
    </rich:panel>


    <h:form>
        <h:panelGrid columns="3">
            <h:outputText value="Name:" />
            <h:inputText value="#{userBean.name}" />
            <a4j:commandButton value="Say Hello" render="out"/>
        </h:panelGrid>
    </h:form>
    <br />

    <a4j:outputPanel id="out">
        <h:outputText value="Hello #{userBean.name} !"
            rendered="#{not empty userBean.name}" styleClass="outhello" />
    </a4j:outputPanel>
  </body>
</html>

1 Ответ

0 голосов
/ 29 марта 2012


В Richfaces 3.3.3 a4j: commanButton не имеет атрибута " render ". Вместо этого он имеет « reRender ». Измените свой атрибут, и он должен работать.

...