0

アプリケーションを JSF1.2/MyFaces+Facelets から JSF2.1/MyFaces に移行しています。JSF1.2/MyFaces+Facelets で使用されていた次のテンプレートがあります。

<ui:component>
<f:subview id="#{id}">
.
.

<script
function blockLinkClicks(){
    //Disables all the HyperLink Controls to prevent repeated submits
    var allLinks = document.getElementById("#{id}:treeNodeForm").getElementsByTagName('a');
    var count = allLinks.length;
.
.
</script>
.
.
.
<h:form id="treeNodeForm">  
    <h:panelGroup id="treePanelId"> 
        <t:tree2 id="tree2Id" 
            value="#{treeBean.treeModel}" var="node" varNodeToggler="t"
            binding="#{treeBean.component}" clientSideToggle="false" showNav="false">
            <f:facet name="selectableNode">
                <h:panelGrid id="tree2PGridSelNodeId" columns="3" cellpadding="0" cellspacing="0" border="0">
.
.
.

移行後、次のエラーが発生します。

java.lang.IllegalStateException: org.apache.myfaces . view.facelets.compiler.CheckDuplicateIdFaceletUtils.checkIds(CheckDuplicateIdFaceletUtils.java:116)

ここSOで同様の質問を見つけましたが、上記の問題で解決策を関連付けることができませんでした。何日も何時間も解決策を見つけようとしましたが、できませんでした。

問題が f:subview または t:tree2 または jsf2 facelets にあるのかどうかわからないので、修正のために試すことができるアドバイスとポインターを手伝ってください。

事前にどうもありがとうございました。

よろしく、クマール。

4

1 に答える 1

1

<f:subview id="#{id}>"ビューが構築されるたびにELが評価されるため、PSSが有効になっていると明らかに壊れます。まず、Web 構成パラメーター javax.faces.PARTIAL_STATE_SAVING を false に設定してみてください。または、構成パラメーター javax.faces.FULL_STATE_SAVING_VIEW_IDS を使用して、完全な状態の保存が必要なビューを示すことができます。id で EL を避け、その部分で他の戦略を使用するのは良い考えかもしれませんが、ロジックにいくつかの変更が必要になる可能性があります。

于 2012-07-03T11:41:18.153 に答える