2

次のように表示する手順のリストを取得しました。

<ul >
    <for:forEach id="steps" items="#{RecipeBean.recipe.steps}" var="step">
        <li>  <com:Step description="#{step.stepDescription}"/></li>
    </for:forEach>
</ul>
<p:commandButton id="addstep" value="#{msg['step.add']}" action="#{RecipeBean.addStep}" update="steps" />

ボタン addStep は、ステップを RecipeBean.recipe.steps コレクションに追加します。これで、新しく追加されたステップが表示されます。しかし、そのように、「j_idt8:addstep」から参照された識別子「ステップ」を持つコンポーネントが見つかりませんというエラーメッセージが表示されます。これはおそらく for:forEach コンポーネントのものです。

誰かがこの問題を解決する方法を知っていますか?


次のようなものを試してください

void Conjunction() #void :
{ }
{
  Disjunction()
  (  "&&"
     Disjunction()  
     {jjtThis.setValue( "&&" );} #BinOp(2)
  )*
}

void Disjunction() #void :
{}
{
  SimpleTerm()
  (  
     SimpleTerm()  
     {jjtThis.setValue( "||" );} #BinOp(2)
  )*
}

void SimpleTerm() :
{Token t ;}
{
    (t=<STRING> | t=<QUOTEDSTRING>)
    {jjtThis.setValue( t.image ) ;}
}
4

1 に答える 1

2

コンポーネントのupdate属性は、<p:commandButton>コンポーネントを指している必要があります。はコンポーネントではなくタグハンドラであるため<for:forEach>、エラー メッセージが表示されます。

リスト オブジェクトを順序付けされていない形式で表示するDataListなどの既存の PrimeFaces コンポーネントを確認することをお勧めします。

その後、次のようにコードをリファクタリングできます。

<p:dataList id="steps" items="#{RecipeBean.recipe.steps}" 
            var="step" itemType="disc">
    <com:Step description="#{step.stepDescription}" />
</p:dataList>
<p:commandButton id="addstep" value="#{msg['step.add']}" 
                 action="#{RecipeBean.addStep}" update="steps" />
于 2013-09-29T15:19:01.063 に答える