Ajax 我可以将ArrayList的内容存储在Spring的bean中吗?

Ajax 我可以将ArrayList的内容存储在Spring的bean中吗?,ajax,spring,hibernate,richfaces,Ajax,Spring,Hibernate,Richfaces,这是我第一次在这里发帖,如果我做了错事,很抱歉 我的问题很简单。我有一个BeanJava类,其中有一个List属性,根据单击表中的哪些列,在该属性上添加值。添加值的方法是一个a4j:support标记,用于在JSF中使用Ajax,我在同一个bean类中编写了它。当我第一次单击该列时,它会将数据正确地存储在列表中。但是,如果我在另一列中再次单击,该列表将再次初始化为空,而不是使用以前的值在列表中添加新值 我的问题是:如果我启动一个方法超过1次,bean属性是否重置,或者我做错了什么 对不起,我的英

这是我第一次在这里发帖,如果我做了错事,很抱歉

我的问题很简单。我有一个BeanJava类,其中有一个List属性,根据单击表中的哪些列,在该属性上添加值。添加值的方法是一个a4j:support标记,用于在JSF中使用Ajax,我在同一个bean类中编写了它。当我第一次单击该列时,它会将数据正确地存储在列表中。但是,如果我在另一列中再次单击,该列表将再次初始化为空,而不是使用以前的值在列表中添加新值

我的问题是:如果我启动一个方法超过1次,bean属性是否重置,或者我做错了什么

对不起,我的英语不好,希望你能理解

你好

编辑:按照你的要求,我将把代码留在这里

EDIT2:已解决,只需将@Scope(“request”)更改为@Scope(“session”),因为“request”在每个请求上初始化bean,而session仅在第一个会话请求中初始化bean。谢谢大家

    <ui:composition template="/templates/main.xhtml">
        <ui:define name="title">TITLE</ui:define>

        <ui:define name="body">


           <table id="tablaFicheros" width="100%">
               <thead>
                    <th class="ficheros" >
                        <h:outputText  value="Categoría" />
                    </th>
                    <th class="ficheros" >
                        <h:outputText value="Subcategoría" />
                    </th>
                    <th class="ficheros" >
                        <h:outputText value="Nombre" />
                    </th>
               </thead>

               <tbody id="cuerpoTabla">
                       <c:forEach items="#{informesFicherosBean.listCategorias}" var="categoria" varStatus="status">
                            <tr id="filaCategoria#{categoria.idCategoria}">             
                                <td class="ficheros">

                                    <h:form>
                                        <a4j:support event="onclick" reRender="listaSubCategorias" actionListener="#{ informesFicherosBean.abrirSubCategorias}">
                                            <f:attribute name="idCategoria" value="#{categoria.idCategoria}" /> 
                                        </a4j:support>
                                        <h:outputText value="${categoria.txtNombre}"/>
                                    </h:form>
                                </td>   
                            </tr>
                       </c:forEach>
               </tbody>

           </table>

             <rich:dataList value="#{informesFicherosBean.subcategoriasAbiertas}" id="listaSubCategorias" var="item" >
                <h:outputText value="#{item.txtNombre}" id="fichero#{item.id}" />
            </rich:dataList>
        </div>  

        </ui:define>    
    </ui:composition>
</html>

标题
Java类:

    @Service("informesFicherosBean")
@Scope("request")
public class InformesFicherosBean {

    /**
     * Log
     */
    protected static final Log LOG = LogFactory.getLog(InformesFicherosBean.class);


    private List<InfInformesFicheros> listFicheros = new ArrayList<InfInformesFicheros>();


    private List<InfCategoria> listCategorias = new ArrayList<InfCategoria>();

    private List<InfCategoria> subcategoriasAbiertas;


    /**
     * Servicio
     */
    @Autowired
    private IInfInformesFicherosModelSvc infInformesFicherosModelSvc;

    /**
     * Servicio
     */
    @Autowired
    private IInfCategoriaModelSvc infCategoriaModelSvc;


    @PostConstruct
    void init() {
    }

    public List<InfInformesFicheros> getListFicheros() {
        if(listFicheros.isEmpty())
            return infInformesFicherosModelSvc.loadAll(); //Return all elements from this db table

        return listFicheros;
    }

    public void setListFicheros(List<InfInformesFicheros> listFicheros) {
        this.listFicheros = listFicheros;
    }

    public List<InfCategoria> getListCategorias() { //return all objects from categories db table

        if(listCategorias.isEmpty()){
            List<InfCategoria> categoriasActuales = infCategoriaModelSvc.listCategorias();
            setListCategorias(categoriasActuales);
        }

        return listCategorias;
    }

    public void setListCategorias(List<InfCategoria> listCategorias) {
        this.listCategorias = listCategorias;
    }

    public List<InfCategoria> getSubcategoriasAbiertas(){
        if (this.subcategoriasAbiertas==null){
            setSubcategoriasAbiertas(new ArrayList<InfCategoria>());
        }

        return this.subcategoriasAbiertas;
    }

    public void setSubcategoriasAbiertas(List<InfCategoria> subcategoriasAbiertas){
        this.subcategoriasAbiertas = subcategoriasAbiertas;
    }

    public void abrirSubCategorias(ActionEvent event){

//debugging here it always return getSubcategoriasAbiertas as an empty list

        Long idCategoriaParam = (Long) event.getComponent().getAttributes().get("idCategoria");
        Integer idCategoria = idCategoriaParam.intValue();

        infCategoriaModelSvc.abrirSubCategorias(getSubcategoriasAbiertas(), getListCategorias().get(idCategoria - 1)); //add elements to attribute List "subcategoriasAbiertas"
    }

}
@Service(“informesFicherosBean”)
@范围(“请求”)
公共类InformesFicherosBean{
/**
*日志
*/
受保护的静态最终日志日志=LogFactory.getLog(InformesFicherosBean.class);
private List listFicheros=new ArrayList();
私有列表listCategorias=new ArrayList();
私人名单子类别;
/**
*服务
*/
@自动连线
私有信息格式Ficheromodelsvc infinformesFicheromodelsvc;
/**
*服务
*/
@自动连线
私有IInfCategoriaModelSvc infCategoriaModelSvc;
@施工后
void init(){
}
公共列表getListFicheros(){
if(listFicheros.isEmpty())
返回infinformsficherosmodelsvc.loadAll();//返回此db表中的所有元素
返回列表;
}
public void setListFicheros(List listFicheros){
this.listFicheros=listFicheros;
}
public List getListCategorias(){//返回categories db表中的所有对象
if(listCategorias.isEmpty()){
List categoriasactuals=infCategoriaModelSvc.listCategorias();
setListCategorias(CategoriasActuals);
}
返回列表分类;
}
public void setListCategorias(列表listCategorias){
this.listCategorias=listCategorias;
}
公共列表getSubcategoriasAbiertas(){
if(this.subcategoriasAbiertas==null){
setSubcategoriasAbiertas(新ArrayList());
}
返回此.subcategoriasAbiertas;
}
公共无效集合子类别辅助项(列出子类别辅助项){
this.subcategoriasAbiertas=subcategoriasAbiertas;
}
公共无效abrirSubCategorias(ActionEvent事件){
//在这里调试时,它总是以空列表的形式返回getSubcategoriasAbiertas
Long idCategoriaParam=(Long)event.getComponent().getAttributes().get(“idCategoria”);
整数IDCATEGRIA=IDCATEGRIAPARAM.intValue();
INFCATEGARIAMODELSVC.ABRIRSOBATCATEGORIAS(getSubcategoriasAbiertas(),getListCategorias().get(idCategoria-1));//将元素添加到属性列表“subcategoriasAbiertas”
}
}

请发送您的代码。太好了,我已经用问题所在的代码编辑了问题,谢谢