0

我有 3 个表单,每个表单都包含包含数据表的组件。我希望将它们组合成一个表单(因为每个表单都包含相同的 UI 组件集)。我想<p:menu>为此目的使用。<p:menu>使用 3 个 menuItems 并单击每个项目,应呈现适当的表单内容。但是当我指定 的 action 属性时<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")}'

第一个转义引号,第二个使用替代字符串分隔符('而不是"),因此它不会与字符串中的引号发生冲突

于 2012-05-25T04:28:21.693 回答