0

目標は、ajax によるドロップダウン リストの選択に基づいて、テキスト フィールドの内容をクリアすることです。すべてのコンポーネントは ui:repeat 内にあります。

EditableValueHolder & clearValue() 手法を使用して、Ajax 経由で更新されたが送信されていないフィールド値をリセットしました。

繰り返しのないコンポーネントに対して機能するプロセスがあります。

同じリスナーを ui:repeat コンポーネント内のコンポーネントに適用しようとすると、返される ID

partialViewContext.getRenderIds()  

から「null」を返す

UIVewRoot.findComponent(renderId) 

この手法を使用して、これらの繰り返しフィールドの内容をクリアできません

コンポーネント ID が UIViewRoot の検索で見つからないのはなぜですか?

public void clearModelValuesViaAjax(AjaxBehaviorEvent e)  throws AbortProcessingException {
FacesContext facesContext = FacesContext.getCurrentInstance();
UIViewRoot root = FacesContext.getCurrentInstance().getViewRoot();

PartialViewContext partialViewContext = facesContext.getPartialViewContext();

for(String renderId:partialViewContext.getRenderIds()) {
  if (renderId.contains("Other")) {
     EditableValueHolder renderComponent = null;
     String[] containers = renderId.split(":");
    if (containers.length <=2) {
      renderComponent = (EditableValueHolder) root.findComponent(renderId); /*NON REPEATING COMPONENTS */
    } else {
      renderComponent = (EditableValueHolder) root.findComponent(containers[0] + ":" + containers[containers.length-1]);  
    }
      if (renderComponent != null)  renderComponent.resetValue(); 
  } etc
4

0 に答える 0