2016-02-16 9 views
1

PrimeFaces LazyDataModel работал перед добавлением баннера OmniFaces в pom.xml. Он вызывает load() метод LazyDataModel.PrimeFaces LazyDataModel # load() метод больше не вызывается после добавления OmniFaces

LazyPostDataModel.java

public class LazyPostDataModel extends LazyDataModel<Post> { 
    private PostService postService; 
    private PostCriteria postCriteria; 

    public LazyPostDataModel(PostService postService, PostCriteria postCriteria) { 
     this.postCriteria = postCriteria; 
     this.postService = postService; 
    } 

    @Override 
    public List<Post> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) { 
     //other process 
    } 
} 

я просто добавьте следующую зависимость в pom.xml для OmniFaces. Он не вызывает метод load().

<dependency> 
    <groupId>org.omnifaces</groupId> 
    <artifactId>omnifaces</artifactId> 
    <version>2.2</version> 
</dependency> 

post.xhtml

<h:form id="postTableForm"> 
    <p:inputText value="#{ManagePostActionBean.postCriteria.name}"/> 
    <p:commandButton value="Search" action="#{ManagePostActionBean.search}" update="postTable"/> 
    <p:outputPanel id="listPanel"> 
     <p:dataTable var="post" value="#{ManagePostActionBean.postDataModel}" id="postTable" 
      paginator="true" style="width:100%;" lazy="true" 
      rows="10" 
      paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
      rowsPerPageTemplate="10, 20, 30, 40, 50, 100" rowIndexVar="index"> 
      <p:column headerText="No" style="width:50px;"> 
       <h:outputText value="#{index + 1}" /> 
      </p:column> 
      <p:column headerText="Name"> 
       <h:outputText value="#{post.name}" /> 
      </p:column> 
      <p:column headerText="Description"> 
       <h:outputText value="#{post.description}" /> 
      </p:column> 
     </p:dataTable> 
    </p:outputPanel> 
</h:form> 

ManagePostActionBean.java

@Named(value = "ManagePostActionBean") 
@ViewScoped 
public class ManagePostActionBean { 
    @Inject 
    private PostService postService; 
    private LazyDataModel<Post> postDataModel; 
    private PostCriteria postCriteria; 

    public void onLoad() { 
     System.out.println("ManagePostActionBean Init...."); 
     postCriteria = new PostCriteria(); 
     postDataModel = new LazyPostDataModel(postService, postCriteria); 
    } 

    public LazyDataModel<Post> getPostDataModel() { 
     return postDataModel; 
    } 

    public PostCriteria getPostCriteria() { 
     return postCriteria; 
    } 

    public void setPostCriteria(PostCriteria postCriteria) { 
     this.postCriteria = postCriteria; 
    } 

    public void search() { 
     resetPagination(); 
     postDataModel = new LazyPostDataModel(postService, postCriteria); 
    } 
} 

моя среда

JSF 2.2 
Primefaces 5.0 
JDK 1.7 
apache-tomee-webprofile-1.7.3 (TomEE) 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mutu</groupId> 
    <artifactId>spring-primefaces</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <repositories> 
     <repository> 
      <id>prime-repo</id> 
      <name>PrimeFaces Maven Repository</name> 
      <url>http://repository.primefaces.org</url> 
      <layout>default</layout> 
     </repository> 
    </repositories> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.1.6.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>4.1.6.RELEASE</version> 
     </dependency>  
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.1.6.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>4.1.6.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>4.1.6.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>4.1.6.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>4.1.6.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.mybatis</groupId> 
      <artifactId>mybatis</artifactId> 
      <version>3.3.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.mybatis</groupId> 
      <artifactId>mybatis-spring</artifactId> 
      <version>1.2.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.mybatis.generator</groupId> 
      <artifactId>mybatis-generator-maven-plugin</artifactId> 
      <version>1.3.2</version> 
     </dependency>  
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-impl</artifactId> 
      <version>2.2.8-02</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.faces</groupId> 
      <artifactId>jsf-api</artifactId> 
      <version>2.2.8-02</version> 
     </dependency> 
     <dependency> 
      <groupId>org.primefaces</groupId> 
      <artifactId>primefaces</artifactId> 
      <version>5.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.primefaces.themes</groupId> 
      <artifactId>all-themes</artifactId> 
      <version>1.0.10</version> 
     </dependency>  
     <dependency> 
      <groupId>org.primefaces.themes</groupId> 
      <artifactId>green-cool</artifactId> 
      <version>1.0</version> 
     </dependency>  
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.4</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>2.4</version> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.8</version> 
     </dependency> 
     <dependency> 
      <groupId>joda-time</groupId> 
      <artifactId>joda-time</artifactId> 
      <version>2.8.1</version> 
     </dependency> 
     <dependency> 
      <groupId>com.zaxxer</groupId> 
      <artifactId>HikariCP</artifactId> 
      <version>2.4.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-fileupload</groupId> 
      <artifactId>commons-fileupload</artifactId> 
      <version>1.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.6.1</version> 
     </dependency>  
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.quartz-scheduler</groupId> 
      <artifactId>quartz</artifactId> 
      <version>2.2.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.omnifaces</groupId> 
      <artifactId>omnifaces</artifactId> 
      <version>2.2</version> 
     </dependency> 
    </dependencies> 
</project> 
+0

Вы вручную обновили JSF с 2.1 до 2.2 в TomEE? Если да, то как именно? TomEE 1.x по умолчанию не JSF 2.2, а JSF 2.1, а затем вы должны использовать OmniFaces 1.x вместо 2.x или перенести сервер на Tomice 7.x. – BalusC

+0

@BalusC Я просто добавляю com.sun.face 2.2 в pom.xml вручную. это не нормально? – CycDemo

+0

Нет ... 'предусмотрено' означает« Целевое время выполнения (сервер приложений) уже предоставляет его ». Кроме того, TomEE 1.x предоставляет Apache MyFaces (org.apache.myfaces), а не Oracle Mojarra (com.sun.faces). Я просто удивлен тем, что вы не видели исключения во время развертывания, как в этом тесно связанном вопросе: http://stackoverflow.com/q/35226794 – BalusC

ответ

1

Вы используете TomEE 1.x, который поставляется с JSF 2.1 (Apache MyFaces).

OmniFaces 2.2 requires JSF 2.2.

У вас есть 2 варианта:

  1. DownGrade к OmniFaces 2,1. Несмотря на то, что OmniFaces 2.x официально требует JSF 2.2, OmniFaces версии 2.0 и 2.1 не имеют зависимости JSF 2.2 от времени развертывания. Версия OmniFaces версии 2.2 была с тегом <o:viewAction> первой версии, требующей JSF 2.2 во время развертывания.

  2. Обновление до TomEE 7.x, первая версия для реализации Java EE 7 и, следовательно, по своей сути JSF 2.2. В настоящее время это только available как релиз M1. Окончательный выпуск ожидается в течение нескольких месяцев.

 Смежные вопросы

  • Нет связанных вопросов^_^