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

» JWorld@TW » Web Framework » JSF  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
己加入精華區
by browser at 2007-06-20 20:20
本主題所含的標籤
無標籤
作者 Sun JSF & IBM JSF解析出來的html不相同!!! [精華]
RR

~Nintendo64~



發文: 686
積分: 3
於 2007-06-15 17:11 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
小弟有類似以下程式碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<h:dataTable value="#{adjapplybank.adjBankInfo}" var="adjBank" styleClass="PD" headerClass="JPD_title" rowClasses="JPD_td1,JPD_td2">
  <h:column>
    <f:facet name="header"><h:outputText value="Bank" /></f:facet>
    <h:outputText value="#{adjBank.branchName}" />
  </h:column>
  <h:column>
    <f:facet name="header"><h:outputText value="xx %" /></f:facet>
    <input type="text" id="bankAmtRate" name="bankAmtRate" size="10" value="<h:outputText value="#{adjBank.appRate}" />" onfocus="this.blur()" />
  </h:column>
  <h:column>
    <f:facet name="header"><h:outputText value="xx $" /></f:facet>
    <input type="text" id="bankAmt" name="bankAmt" size="10" value="<h:outputText value="#{adjBank.bankAmount}" />" onblur="javascript:calRate(this)" />
  </h:column>
</h:dataTable>


當使用Sun JSF package時,解譯出來的html code如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<table class="PD">
<thead>
<tr>
<th class="JPD_title" scope="col">參貸銀行</th>
<th class="JPD_title" scope="col">調整後動撥比率</th>
<th class="JPD_title" scope="col">調整後動撥金額</th>
</tr>
</thead>
<tbody>
<tr class="JPD_td1">
<td>館前分行</td>
<td>
   
    <input type="text" id="bankAmtRate" name="bankAmtRate" size="10" value="75%" onfocus="this.blur()" />
  </td>
<td>
   
    <input type="text" id="bankAmt" name="bankAmt" size="10" value="75000000" onblur="javascript:calRate(this)" />
  </td>
</tr>
<tr class="JPD_td2">
<td>bank</td>
<td>
   
    <input type="text" id="bankAmtRate" name="bankAmtRate" size="10" value="25%" onfocus="this.blur()" />
  </td>
<td>
   
    <input type="text" id="bankAmt" name="bankAmt" size="10" value="25000000" onblur="javascript:calRate(this)" />
  </td>
</tr>
</tbody>
</table>


但是當用IBM JSF(WebSphere)時,解譯出來的html code卻變成:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    <input type="text" id="bankAmtRate" name="bankAmtRate" size="10" value="" onfocus="this.blur()" />
 
 
   
    <input type="text" id="bankAmt" name="bankAmt" size="10" value="" onblur="javascript:calRate(this)" />
 
<table class="PD">
<thead>
<tr>
<th class="JPD_title" scope="col">參貸銀行</th>
<th class="JPD_title" scope="col">調整後動撥比率</th>
<th class="JPD_title" scope="col">調整後動撥金額</th>
</tr>
</thead>
<tbody>
<tr class="JPD_td1">
<td>館前分行</td>
<td>75%</td>
<td>75000000</td>
</tr>
<tr class="JPD_td2">
<td>bank</td>
<td>25%</td>
<td>25000000</td>
</tr>
</tbody>
</table>
 

很明顯,IBM JSF解譯出來的html code把html text field放到整個table上方
這和我的需求全不同呀

因為需求上,逼須搭配javascript做某些輸入值的運算驗證
而用JSF inputText tag出來的html text field又會有很怪的id & name難以掌握
例如JSF input text id設為"bankName"
但是解譯出來的html text field id則會變成類似"form1:jsp_xxxxxx_bankName"
這樣奇怪的id
xxxx是一些奇怪的數字,很難掌握。

為何同樣語法寫的JSF page
兩邊JSF package解析出來的結果相差這麼多?
這樣子哪來的write ones, run anywhere ?


reply to postreply to post

Focus TDCi Powershift,純正德國血統
作者 Re:Sun JSF & IBM JSF解析出來的html不相同!!! [Re:RR]
RR

~Nintendo64~



發文: 686
積分: 3
於 2007-06-20 10:11 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
到底,JSF有沒有個標準,難道就這樣各玩各的嗎?

各家的JSF解析器把一樣的source code解譯成不同的東西,
當初java沸沸揚揚write once, run anywhere的口號,消失到哪去了?


reply to postreply to post

Focus TDCi Powershift,純正德國血統
作者 Re:Sun JSF & IBM JSF解析出來的html不相同!!! [Re:RR]
koji

秒速5センチメートル

站長

發文: 8415
積分: 19
於 2007-06-20 10:59 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
我這的ibm websphere跑出來不會有那堆數字,不知道版本一不一樣
要給個jar試試看咩?

另外這跟write once, run any where有關係?
首先你確定這規格有寫?另外就算規格有,那就表示一定是其中一個在
implement時錯了,那廠商的錯誤是JAVA的錯?

koji


reply to postreply to post
JCConf Taiwan 2015 開始售票了!!
Facebook上的TWJUG社團,歡迎加入
作者 Re:Sun JSF & IBM JSF解析出來的html不相同!!! [Re:RR]
RR

~Nintendo64~



發文: 686
積分: 3
於 2007-06-20 11:50 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
一樣的JSF Code
1
2
3
4
  <h:column>
    <f:facet name="header"><h:outputText value="調整後" /></f:facet>
    <input type="text" id="bankAmt" name="bankAmt" value="<h:outputText value="#{adjBank.appRate}" />" />
  </h:column>


預期解譯出來的code應該類似這樣:
1
2
3
4
5
6
<tr>
<thead>調整後</thead>
</tr>
<tr>
<td><input type="text id="bankAmt" name="bankAmt" value="xxx"></td>
</tr>


Sun的解譯正確,但是IBM的解譯結果:
1
2
3
4
5
6
7
8
<input type="text id="bankAmt" name="bankAmt" value="xxx">
 
<tr>
<thead>調整後</thead>
</tr>
<tr>
<td></td>
</tr>


先不管h:inputText的用法與那個form1:jsp_xxxxx的怪名
連tag的位置解譯出來都是錯的...........

只想到兩種可能
。IBM自己亂搞一通
。Sun根本沒對JSF做出嚴格規範

用的是Sun標準JSF 1.2 API (配Tomcat 6)
與IBM Rational 6 (與裡面的WebSphere)

上一個惡搞JVM的是許多人痛惡的微軟,也因此被Sun告了
天曉得這次是誰出包


reply to postreply to post

Focus TDCi Powershift,純正德國血統
作者 Re:Sun JSF & IBM JSF解析出來的html不相同!!! [Re:RR]
atticcat

There is no cookie



發文: 702
積分: 4
於 2007-06-20 13:27 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
這是JSF元件實作的問題吧?應該跟規格無關,也跟JAVA無關.
至於IBM的為何會被跳開,
因為是你混用了JSF元件跟HTML
你可以參考我這篇的說明,應該夠清楚.
http://www.javaworld.com.tw/roller/page/atticcat?entry=2006_11_5_JSF_JSF_MIX_HTML


reply to postreply to post
About Cat
Linkedin
作者 Re:Sun JSF & IBM JSF解析出來的html不相同!!! [Re:RR]
kellyn1124





發文: 2
積分: 0
於 2008-04-03 19:01 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
試看看把非JSF標籤的部份,用<f:verbatim>包起來

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