Ajax 我可以将ArrayList的内容存储在Spring的bean中吗?
这是我第一次在这里发帖,如果我做了错事,很抱歉 我的问题很简单。我有一个BeanJava类,其中有一个List属性,根据单击表中的哪些列,在该属性上添加值。添加值的方法是一个a4j:support标记,用于在JSF中使用Ajax,我在同一个bean类中编写了它。当我第一次单击该列时,它会将数据正确地存储在列表中。但是,如果我在另一列中再次单击,该列表将再次初始化为空,而不是使用以前的值在列表中添加新值 我的问题是:如果我启动一个方法超过1次,bean属性是否重置,或者我做错了什么 对不起,我的英语不好,希望你能理解 你好 编辑:按照你的要求,我将把代码留在这里 EDIT2:已解决,只需将@Scope(“request”)更改为@Scope(“session”),因为“request”在每个请求上初始化bean,而session仅在第一个会话请求中初始化bean。谢谢大家Ajax 我可以将ArrayList的内容存储在Spring的bean中吗?,ajax,spring,hibernate,richfaces,Ajax,Spring,Hibernate,Richfaces,这是我第一次在这里发帖,如果我做了错事,很抱歉 我的问题很简单。我有一个BeanJava类,其中有一个List属性,根据单击表中的哪些列,在该属性上添加值。添加值的方法是一个a4j:support标记,用于在JSF中使用Ajax,我在同一个bean类中编写了它。当我第一次单击该列时,它会将数据正确地存储在列表中。但是,如果我在另一列中再次单击,该列表将再次初始化为空,而不是使用以前的值在列表中添加新值 我的问题是:如果我启动一个方法超过1次,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”
}
}
请发送您的代码。太好了,我已经用问题所在的代码编辑了问题,谢谢