2011-09-06 11 views
0

私は、最初のinputTextに入力されたh:inputTextの数を持つa4j:repeatを持つpanelGroupを再レンダリングするonBlurイベントを持つh:inputTextを持っています。 inputTextフィールドはgetingが作成されていますが、フォーカスが失われた後にpanelGroupが再レンダリングされる前にフォーカスが設定されているため、フォーカスはa4j:repeatedの最初のフィールドにありません。richFacesのreRenderの後のフォーカス

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

a4jにフォーカス属性があります:サポートコンポーネントが。リクエストの完了後にフォーカスを設定するには、要素のIDが必要です。入力テキストのIDが何であるかを知っていれば、ここに設定することができます

+0

ありがとうございました。 –

+0

こんにちはロスソリューションは、小さな単純なページのために働いていますが、それは大規模な複雑なページのために動作していません。 –

関連する問題