Java 关于填充ArrayList的JSF Ajax问题
我编写了一个JSF页面,用来帮助客户机选择要添加到ArrayList列表中的项。当selectonemenu的值更改时,我使用Ajax来实现操作 当应用程序运行时,没有异常,当Ajax被触发时,操作就会生效。然而,它似乎并没有持续下去。换句话说,每次启动操作时,都会将对象添加到列表中,但在下一次启动时,列表将重置为0,并且只有新添加的对象在其中 我的代码: 豆子: JSF: 如何修复它?您是否尝试使用a4j:commandLink而不是嵌套在h:commandLink中的a4j:ajaxJava 关于填充ArrayList的JSF Ajax问题,java,ajax,jsf,jsf-2,ajax4jsf,Java,Ajax,Jsf,Jsf 2,Ajax4jsf,我编写了一个JSF页面,用来帮助客户机选择要添加到ArrayList列表中的项。当selectonemenu的值更改时,我使用Ajax来实现操作 当应用程序运行时,没有异常,当Ajax被触发时,操作就会生效。然而,它似乎并没有持续下去。换句话说,每次启动操作时,都会将对象添加到列表中,但在下一次启动时,列表将重置为0,并且只有新添加的对象在其中 我的代码: 豆子: JSF: 如何修复它?您是否尝试使用a4j:commandLink而不是嵌套在h:commandLink中的a4j:ajax 由于h
由于h:commandLink的click事件本身没有像onclick=return false;,那样被阻止;,它似乎正在通过刷新页面来清除列表。托管bean的范围是什么?会话范围是什么!尝试在@ViewScoped处呈现它。会话作用域是什么?我将它与其他一些工作正常的Ajax操作一起使用。这次是唯一的失败。你说的下一次发射是什么意思?
//Assume all necessary imports have been made
public class MBean
{
private List<SomethingElse> objects;
private List<SomethingElse> toFill;
public MBean()
{
toFill = new ArrayList();
//Let's assume that the list is correctly created and populated in here
}
public void addObjectToList(AjaxBehaviorEvent event)
{
try
{
SomethingElse obj = (SomethingElse) event.getNewValue();
toFill.add(obj);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public List<SomethingElse> getObjects()
{
return objects;
}
public void setObjects(List<SomethingElse> objects)
{
this.objects = objects;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<h:head>
<title>AJAX or SELECTONEMENU ISSUE</title>
<meta charset="utf-8"/>
</h:head>
<h:body>
<f:view encoding="utf-8">
<section>
<h:form id="testForm">
<h:dataTable id="showTb" value="#{mBean.toFill}"
var="det" cellpadding="5px" rows="0">
<f:facet name="header">
Added objects
</f:facet>
<h:column>
<h:outputText value="#{det}"/>
</h:column>
</h:dataTable><br/>
<a4j:region>
<h:selectOneMenu converter="#{aConverter}">
<!-- Assume converter is working-->
<f:selectItem itemLabel="Object to add" itemValue=""/>
<f:selectItems value="#{mBean.objects}" var="o"/>
</h:selectOneMenu><br/>
<h:commandLink value="Add">
<a4j:ajax event="click" execute="@region"
listener="#{mBean.addObjectToList}" render="showTb"/>
</h:commandLink>
</a4j:region>
<br/><br/>
</h:form>
</section>
</f:view>
</h:body>
</html>