以前、修正して頂いた「動的レイアウトの切り替えの挙動について」と
同様の現象が「m:extends」の指定でも発生しているため、報告いたします。
症状としましては、
S2JSFのHTMLテンプレートにて、htmlタグのm:extends属性に
<html ...
m:extends="#
のように「m:extends」を指定し、レイアウトの切り替えを行なった場合に
以下のような例外が発生します。
────────────────────────────────
javax.servlet.ServletException: cannot add component with id '_id27' and
path : {Component-Path : [Class: org.seasar.jsf.component.UIElement,Id: _id27]} to its parent component. This might be a problem due to duplicate
ids.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:125)
org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:62)
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:60)
org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:112)
────────────────────────────────
以下再現方法を纏めましたのでご確認ください。
############################ 再現方法 ############################
■確認環境
s2jsf-example-1.0.20 + Tomcat5.5.17
■再現手順
1. 「index.html」のhtmlタグのレイアウトを#{layout}
とする。
2. 「WEB-INF/layout/layout.html」の複製を同一フォルダに2つ作成する
(layout2.html」と「layout3.html」とする)
3. 「layout2.html」の10~12行目(「header.html」のs:insert指定)を
コピー&ペーストし、2行のヘッダが表示されるように編集する
4. 「/index.html?layout=/WEB-INF/layout/layout.html」にアクセスする
5. 「/index.html?layout=/WEB-INF/layout/layout2.html」にアクセスする
6. 「/index.html?layout=/WEB-INF/layout/layout3.html」にアクセスする
→上記の例外が発生する
※この手順で使用したファイルを添付しましたので、参考になればと思います
####################################################################