我有一个h:inputText,它有一个onBlur事件,它使用a4j重复一个panelGroup:repeat,它将在第一个inputText中输入h:inputText。 inputText字段是geting创建的,但焦点不在a4j:repeat中的第一个字段上,因为在重新渲染发生后焦点丢失时,在重新渲染panelGroup之前设置了焦点。
XHTML代码
<a4j:outputPanel id="PageARoot">
<a4j:keepAlive beanName="simpleBean" />
<h:outputText value="Infants:" />
<h:inputText id="text" value="#{simpleBean.size}">
<a4j:support event="onblur" action="#{simpleBean.action}"
reRender="MyContent" />
</h:inputText>
<h:panelGroup id="MyContent">
<a4j:repeat id="list" value="#{simpleBean.list}" var="item" rowKeyVar="rowIndex">
<h:inputText name="test#{rowIndex}" id="test" value="#{rowIndex}" />
</a4j:repeat>
</h:panelGroup>
</a4j:outputPanel>
豆
public class SimpleStringBean {
private List list;
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
private int size;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
@PostConstruct
public void initialize(){
System.out.println("Initalize");
list = new ArrayList();
list.add(new Long(0));
size = 1;
}
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public void action(){
System.out.println("Action: " + text);
list = new ArrayList();
for(int i = 0; i < size; i++){
list.add(new Integer(0));
}
}
}
答案 0 :(得分:0)
a4j:support组件有一个焦点属性。在请求完成后,它将元素的id设置为焦点。因此,如果你知道输入文本的id是什么,你可以在这里设置