一個專案或是一個系統,在開始初期,一些config的動作,是很瑣碎的。雖然不是每天都在config project或是new project,但是真有需要new project時,也總是需要東copy 一段、西copy一段。為了方便自己參考,這裡整合了那些需要copy的東西。
使用Framework與前提
這篇文章裡所介紹的設定,主要base以下的環境。
- JSF 2.2 (Mojarra)
- PrimeFaces 5
Maven 3.1
在Eclipse中使用的是Maven專案。
- JSP 3.0 以上
- Java 1.7
JSF 設定
web.xml
Core JSF
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</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>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
JSF 2 以上, faces-cofnig.xml不是必需。但你也可以生一個。大型系統中,有faces-config.xml來統一管理頁面流程,會是一件很好的事。
JSF2 中建議以xhtml為副檔名,表示以XML架構來撰寫。 JSF 2 基本上就是符合XML規範的HTML。
PrimeFaces
PrimeFaces基本上是可以不用設定。不過如果使用一些特效,或是看起來根本就不是標準CSS的呈現時,就需要設定。這裡主要是設定PrimeFaces theme的部份。
Theme的概念,簡單來說就像是Windows的配色一樣,可以有科技藍、櫻桃紅 等搭配,一旦變更,包含底色、背景、字型等都會一起變更。 Theme 不只在PrimeFaces,其他許多的JSF implement也都有theme的概念與設定。
<context-param><!--Primefaces User Guide PDF, configuration section-->
<param-name>primefaces.THEME</param-name>
<param-value>bootstrap</param-value>
</context-param>
Maven
pom.xml
這邊是Maven的相關設定。使用Maven的好處是你以不用管理太多的library dependency的問題。 但即使如此,很多時候還是不如預期。以下是pom.xml的設定:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>5.0</version>
</dependency>
<dependency>
<groupId>org.primefaces.themes</groupId>
<artifactId>bootstrap</artifactId>
<version>1.0.9</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>jstl</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.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11-beta2</version>
</dependency>
發生了什麼事?
預期上,透過Maven,我只要告訴Maven 說我要使用PrimeFaces,只有PrimeFaces有使用到JSF,就應該被自動匯進來。但是事情不像傻人所想的那麼簡單。
首先, PrimeFaces必需依賴在其他JSF實作上。官網上沒寫,不過文件上有,必需依賴Mojarra或MyFaces。不管怎樣,在開發的時候,肯定需要使用到 jsf-api。然而需不需要在 Maven上匯入,或是需要匯入那種JSF實作,一部份的原因,取決於你所使用的container。Tomcat 肯定是沒有,所以必需透過Maven來自行匯入。另一部份原因,當然是看案子需要使用那種JSF實作。
Runtime 時期,Tomcat需要使用到jsf-impl,因此需要匯入。jstl實作也是如此。
Servlet那一段,看開發方式。可以值接使用container的servlet,也可以在Maven指定。
The Bug...
在開發的過程中,有遇到一些問題:
Complie 版本錯誤
每次update maven project時,總有complie 版本不對的問題。
Dynamic Web Module 3.0 requires Java 1.6 or newer. Maven Java EE Configuration Problem
解決方式:在Maven 的 pom.xml 增加 complier-plugin
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
faces-config.xml
referenced file contains errors
聽說在faces-config.xml時會有一點問題…(未驗證,參考網址 qussay )
Referenced file contains errors (jar:file:/Applications/eclipse/plugins/org.jboss.tools.jst.web_3.5.0. Final-v20130717-0309-B75.jar!/catalog/web-facesconfig_2_2.xsd). For more information, right click on the message in the Problems View and select "Show Details..."
修改方式:將xml xsi schemal location 宣告 http://xmlns.jcp.org/xml/ns/javaee
拿掉。
沒有留言 :
張貼留言