0

データテーブルを含むコンポーネントを持つ 3 つのフォームがあります。それらを 1 つのフォームに結合したいと考えています (各フォームには同じ UI コンポーネントのセットが含まれているため)。<p:menu>この目的で使用することを考えました。<p:menu>3 つの menuItem があり、各項目をクリックすると、適切なフォーム コンテンツがレンダリングされます。のアクション属性を指定すると<p:menu>、次のエラーが発生します。

要素タイプ「p:menuitem」の後には、属性指定「>」または「/>」が続く必要があります。

xhtml コード:

<h:form id="frm">
  <p:menu>
    <p:menuitem value="price losers" action="#{equityBean.onType("losers")}"/>
    <p:menuitem  value="price gainers"/>
    <p:menuitem  value="price volume"/>
  </p:menu>
  <p:tabView activeIndex="#{equityBean.activeIndex}">
    <p:ajax event="tabChange" listener="#{equityBean.onChange}" update=":frm"/>
    <p:tab title="NSE">                   

      <p:dataTable value="#{equityBean.scripList}" var="scrip">
        ....                        
      </p:dataTable>
    </p:tab>
    <p:tab title="BSE">
      <p:dataTable value="#{equityBean.scripList}" var="scrip">
        .....
      </p:dataTable>
    </p:tab>
  </p:tabView>
</h:form>

ビーンコード:

public void onType(String type)
{
    this.type=type;
}

public List<MasterScrip> getScripList() {

   if(type.equalsIgnoreCase("losers"))
   {
    scripList=new ArrayList<MasterScrip> ();
    scripList=getScripByPriceLosers(exchange);
    return scripList;
   }
   else if(type.equalsIgnoreCase("gainers"))
   {
    scripList=new ArrayList<MasterScrip> ();
    scripList=getScripByPriceLosers(exchange);
    return scripList;
   }
   else
   {
    scripList=new ArrayList<MasterScrip> ();
    scripList=getScripByVolumeType(exchange);
    return scripList;
   }
}

どこで間違っていますか?

4

1 に答える 1

1

文字列内の引用符をエスケープする必要があります。具体的には、これ

"#{equityBean.onType("losers")}"

"#{equityBean.onType("値として解析されるため無効losersであり、有効な継続ではないため、パーサーにエラーがあります

あなたは書く必要があります

"#{equityBean.onType(&quot;losers&quot;)}"

また

'#{equityBean.onType("losers")}'

1つ目は引用符をエスケープ'し、2つ目は(の代わりに)代替の文字列区切り文字を使用する"ため、文字列内の引用符と衝突しません

于 2012-05-25T04:28:21.693 に答える