gpt4 book ai didi

java - primefaces 3.2 menuItem bean 变量未在操作上设置

转载 作者:行者123 更新时间:2023-12-02 07:46:33 26 4
gpt4 key购买 nike

我有一个 xhtml 页面,其中包含 primefaces 的菜单和选项卡控件(带有数据表)。数据表根据“类型”变量(在bean中)获取值。单击每个菜单项时,会触发一个操作(onType(“param”)),并在 bean 中设置类型变量(如下所示)。但现在当我在 tabView 中选择一个选项卡时,类型变量再次设置为 null。为什么会发生这种情况。

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>

bean 代码:

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

public void onChange(TabChangeEvent event) {
exchange=event.getTab().getTitle();
}
public List<MasterScrip> getScripList() {
if(type!=null)
{
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;
}
}
else
{
scripList=new ArrayList<MasterScrip> ();
scripList=getScripByVolumeType(exchange);
return scripList;
}
}

我哪里错了?

编辑(web.xml):

    <context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>true</param-value>
</context-param>

最佳答案

声明为 @ViewScoped 的 Bean 有时表现得像 @RequestScoped bean,并且会在每次请求或回发时重新创建。这篇优秀的博客文章描述了原因:@ViewScoped fails in tag handlers .

在引用的文章中,列出了一些可能的解决方案。您还可以将该值保存在 session 作用域中,然后仅将其注入(inject)到您的 View /请求作用域 bean 中。

关于java - primefaces 3.2 menuItem bean 变量未在操作上设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10748942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com