私は条件付きでコマンドリンクをレンダリングしようとしています。しかし、私は、beans関数のデバッグ時に、株式のview.hasfolioが呼び出されないことを発見しました。これはユーザーレンダリングの正しい方法ですか、別の方法でこれを行う必要がありますか?primefacesコマンドラインを条件付きでレンダリング
<h:form id="form">
<p:dataGrid id="prices" var="orderBooks" value="#{stocksView.latestPricesResults}" columns="3" rows="12">
<f:facet name="header">
WST 100
</f:facet>
<p:column>
<p:panel header="#{orderBooks.bidOrderId.member.memberId}">
<h:panelGrid columns="1">
<h:outputText value="#{orderBooks.price}" />
<h:outputText value="#{orderBooks.bidOrderId.member.party}" />
<h:outputText value="#{orderBooks.lastUpdate}" />
<p:commandLink update=":form:buyDetail" oncomplete="PF('buyDialog').show()" title="View Detail">
<h:outputText value="Buy"/>
<f:setPropertyActionListener value="#{orderBooks}" target="#{stocksView.selectedStock}" />
</p:commandLink>
<p:commandLink update=":form:sellDetail" oncomplete="PF('sellDialog').show()" title="View Detail" rendered="#{stocksView.hasPortfolios[orderBooks.bidOrderId.member.memberId]}">
<h:outputText value="Sell"/>
<f:setPropertyActionListener value="#{orderBooks}" target="#{stocksView.selectedStock}" />
</p:commandLink>
</h:panelGrid>
</p:panel>
</p:column>
</p:dataGrid>
</h:form>
これはStocksView(ViewScoped Bean)のhasPortfoliosメソッドです。 hasPortfolios変数はプライベートMap hasPortfoliosです。私の目に
public void hasPortfolios(){
hasPortfolios = new HashMap<Boolean,String>();
Collection<Portfolio> portfolios = user.getTrader().getPortfolios();
Iterator<Portfolio> iter = portfolios.iterator();
while(iter.hasNext()){
Portfolio p = iter.next();
if(p.getBalance() == 0){
hasPortfolios.put(false, p.getMember().toString());
logger.log(Level.INFO, "hasPortfolios false");
}
else
{
hasPortfolios.put(true,p.getMember().toString());
logger.log(Level.INFO, "hasPortfolios true");
}
}
}
バッキングビーン 'stockView'と変数 'stocksView.hasPortfolios'の詳細を表示できますか? –
ありがとうtam nguyen、私はそのメソッドを追加しました – zobbo