JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Web Framework » JSF  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 [問題][已解決] IE無法正確開啟*.jsf (JSF RI的guessNumber範例)
holicy





發文: 14
積分: 2
於 2007-03-08 22:52 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
Sun Java所提供的JSF RI中,提供了數個範例。

我對其中的一個範例,jsf-guessNumber,做了一個小修改。
原本該範例的JSF Servlet的對應URL為/guess/*,

原本的WEB-INF/web.xml
1
2
3
4
5
6
...
<servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>/guess/*</url-pattern>
</servlet-mapping>
...

我把其修改成*.jsf,

修改後的WEB-INF/web.xml
1
2
3
4
5
6
...
<servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
...

當然,另外也修改了index.jsp中的jsp:forward,

修改後的index.jsp
1
2
3
...
<jsp:forward page="greeting.jsf"/>
...

雖然修改後的jsf-guessNumber範例仍可被Firefox與Opera正確開啟,
但當我嘗試使用IE7打開網頁時卻發生了問題!
IE似乎不認得以.jsf為副檔名的檔案,進而彈出下載檔案的視窗,而無法正確顯示網頁。
也有網頁使用相同的對應設定,但都能順利的使用IE開啟,e.g.,http://webdev2.sun.com/jsf-j1/

應該是須要設定mime-type吧?該如何設定?還是...


holicy edited on 2007-04-23 21:37
reply to postreply to post
作者 Re:[問題] IE無法正確開啟*.jsf [Re:holicy]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2007-03-09 09:23 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
真詭異
那在web.xml加上
<mime-mapping>
<extension>jsf</extension>
<mime-type>text/html</mime-type>
</mime-mapping>

看看?

koji


reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:[問題] IE無法正確開啟*.jsf [Re:koji]
holicy





發文: 14
積分: 2
於 2007-03-09 11:41 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
koji wrote:
那在web.xml加上
<mime-mapping>
<extension>jsf</extension>
<mime-type>text/html</mime-type>
</mime-mapping>

恩,我試過之後發現還是不可以:(

不過有好消息,剛剛發現了一個解決的方法!

我嘗試觀看瀏覽器所得網頁的內容型態(content-type?
不知道用IE要怎麼看,如果使用Firefox的話,在頁面上點選右鍵後選"檢視頁面資訊"即可)
發現內容為application/xhtml+xml

接著我在jsf-guessNumber範例中的三個JSP檔案中發現有設定content type的指令,

原本的index.jsp, greeting.jsp and response.jsp
1
2
3
...
<jsp:directive.page contentType="application/xhtml+xml; charset=UTF-8"/>
...

該指令確實把網頁的內容型態設定為application/xhtml+xml!於是我把它修改成text/html,

修改後的index.jsp, greeting.jsp and response.jsp
1
2
3
...
<jsp:directive.page contentType="text/html; charset=UTF-8"/>
...

果然!IE可以正常開啟網頁了:)

接著,我試著把這三個JSP檔案中設定content-type的指令刪除,
發現瀏覽器所得網頁的內容型態變為text/xml,Firefox與Opera仍可"順利"顯示網頁,
不過IE把它視之為單純的xml(這點我覺得IE並沒有做錯)。

最後有件奇怪的事,
不管我有沒有在web.xml中補上mime-mapping,
都沒有影響到瀏覽器所得的content-type!

難道mime-type與content-type沒有關係嗎?

* * *
順便補充一個有用的連結,
下面網頁提供了各家瀏覽器對XHTML可能的content-type的支援表格:

http://www.w3.org/People/mimasa/test/xhtml/media-types/results

由表格中可發現,設定網頁內容型態為text/html仍是最保險的作法!


holicy edited on 2007-03-09 16:08
reply to postreply to post
作者 Re:[問題] IE無法正確開啟*.jsf [Re:koji]
holicy





發文: 14
積分: 2
於 2007-03-09 22:39 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
koji wrote:
真詭異
_____________________________________________________

關於這個問題,我現可以給予一個結論了。

在jsf-guessNumber範例中,網頁的內容型態都設定為application/xhtml+xml,
又因微軟的Internet Explorer並不"認同"該內容型態,因此才不能順利地使用IE開啟範例。

撰寫JSP有兩種風格,指令式與XML。[1]
傳統指令式風格的JSP網頁,預設的內容型態為text/html;
XML風格的JSP網頁,其預設的內容型態為text/xml。
(不確定這是否有制訂在JSP的Spec中,但在Tomcat 6.0.10是如此)

在jsf-guessNumber範例中,網頁是使用XML風格來撰寫,
這是為何如果刪除網頁中設定內容型態的"指令"(jsp:directive.page標籤),
內容型態會變為text/xml。

那為何在web.xml中設定mime-mapping會無效呢!?
當我們請求某個.jsf,是喚起JSF Servlet的方法,並非真正直接請求了某個資源!
JSF Servlet所回覆訊息的內容型態是什麼,JSF Servlet有其預設,除非我們在網頁中特別指明...
我想這應該是mime-mapping失效的原因!

大部份的人應該都是使用指令式風格撰寫JSF或JSP,
這也難怪koji會覺得這個問題詭異:)

* * *
[1] 請參考http://e-docs.bea.com/wls/docs92/webapp/configurejsp.html#wp160056


holicy edited on 2007-03-09 22:46
reply to postreply to post
» JWorld@TW »  Web Framework » JSF

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8