[Seasar-user:2431] Re: [S2JSF] Myfaces1.0.9 のJSCookMenu利用時の挙動について

Naotaka Yoshikawa nao
2005年 7月 26日 (火) 09:06:41 JST


吉川です。

レスありがとうございます。
以下に、その後少し調べた所を追加しておきます。

Yasuo Higa  (2005/07/25 21:09):
> <[E-MAIL ADDRESS DELETED]> の、
>    "[Seasar-user:2423] [S2JSF] Myfaces1.0.9のJSCookMenu利用時の挙動について" において、
>    "Naotaka Yoshikawa <[E-MAIL ADDRESS DELETED]>"さんは書きました:
> 
> ひがです。
> 
> 
>>はじめまして、吉川と申します。
>>
>>下記のような現象が出ているのですが、
>>S2JSF側で何らかの対応をすることは、可能でしょうか?
>>
>>現象:
>>MyfacesのJSCookMenuを利用すると、奇数番目の
>>メニュー項目のサブメニューが表示されない。
>>
>>環境:
>>OS:XP SP2
>>JDK:1.4.2-006
>>Tomcat:5.0.28
>>S2JSF:1.0.3(1.0.4でも同じ)
>>Myfaces:1.0.9
>>
> 
> 以前もtaneさんがJSCookMenuがうまくいかないと報告されてました。
> なんか特殊なことやってるのかなぁ。
> ちょっとJSCookMenuのソース見てみます。

taneさんの件というと、[Seasar-user:2279]のことですよね?
同様のエラーは、MyFaces1.0.9でも出ています。
ERROR org.apache.myfaces.custom.navmenu.NavigationMenuUtils - Invalid
child with id _id20of component with id : hoge : must be
UINavigationMenuItem or UINavigationMenuItems, is of type :
org.seasar.jsf.component.UIText

これも、少し調べたのですが、どうも、spanタグにMyfacesの
拡張タグ(x:UINavigationMenuItem)を指定してネストさせた場合に、
S2JSFは、UITextを返すようですが、MyFacesは、UINavigationMenuItem or
UINavigationMenuItemsを期待しているために
このようなエラーを吐くようです。
以下が該当ソースの抜粋です。
---------------------------------------------------------------
org.apache.myfaces.custom.navmenu.NavigationMenuUtils
 public static List getNavigationMenuItemList(UIComponent uiComponent)
 {
  List list = new ArrayList(uiComponent.getChildCount());
  for(Iterator children = uiComponent.getChildren().iterator();
children.hasNext();)
  {
   UIComponent child = (UIComponent)children.next();
   if(child instanceof UINavigationMenuItem)
   {
    ........
   } else
   if(child instanceof UISelectItems)
   {
    ........
   } else
   {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    log.error("Invalid child with id " + child.getClientId(facesContext) +
      "of component with id : " + uiComponent.getClientId(facesContext) +
       " : must be UINavigationMenuItem or UINavigationMenuItems, is of
type : " +
       (child != null ? child.getClass().getName() : "null"));
   }
  }

  return list;
 }
---------------------------------------------------------------

Myfaces1.0.8では、このエラーを出しつつも、動作はするようです。
またこのエラーは、ネストさせた全てのタグ(=サブメニューのあるもの全て)に
対して起きているので、サブメニューが表示されない件とは、
別問題かもしれません。

個人的には、MyFacesのfaces-config.xmlが1.0.9になって
かなり変更されているのが影響しているのでは?
という気がしてます。

以上 よろしくお願いします。
-- 
+++++++++++++++++++++++++++++++++++++++
Name   : Naotaka Yoshikawa



Seasar-user メーリングリストの案内