在富裕的面前重点关注reRender

时间:2011-09-06 07:05:02

标签: richfaces

我有一个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));
    }
}

}

1 个答案:

答案 0 :(得分:0)

a4j:support组件有一个焦点属性。在请求完成后,它将元素的id设置为焦点。因此,如果你知道输入文本的id是什么,你可以在这里设置