2017-06-09 19 views
0
<p:outputPanel id="panel"> 
<ui:repeat value="#{dataController.display()}" 
var="item" rendered="#{Bean.showtable}"> 
    <b:row> 
    <b:column col-md="5"> 
    <h:outputText value="#{item.name}" style="font-family: verdana;font-size:16px;margin-bottom:15px;"></h:outputText> 
    </b:column>  

    <b:column col-md="7"> 
    <h:inputText style="width:200px;height:30px;margin-bottom:15px;" 
          autocomplete="off"></h:inputText> 
    </b:column>       
    </b:row> 
    </ui:repeat> 

アクセス値:上記のコードではJSF

を繰り返し、IはUIを使用した:出力にリスト内の項目名前を表示するためを繰り返しますテキストの入力テキストの値を入力してください。

入力テキストは、動的に生成されるリスト内の値に依存します。

入力テキストから値にアクセスしてリストに追加する必要があります。入力テキストを表示するために一回繰り返します。

は、誰も私のUIを使用しているにもかかわらず豆/リストに入力されたテキストから値にアクセスするためのアプローチを提案してくださいことはできますか?

私は空のリストを作成し、再びui:repeatを入力テキストに対してのみ使用しようとしました。入力テキストから値にアクセスしようとしました.Ui:repeatはもう一度動作しません。 。

私はJSFを初めて使っています。助けてくれれば幸いです。ありがとうございます。

答えて

1

空のリストを使用しないでください。 nullまたは空の値で初期化します。
あなたのリストにinputsがあるとします。beanはこのようになります。

@Named 
@ViewScoped 
public class DataController implements Serializable { 

    private List<String> inputs; 

    // getters and setters 

    @PostConstruct 
    public void init() { 
     inputs = new ArrayList<String>(); 
    } 

    public List<Bean> getDisplay() { 
     List<Bean> display = new ArrayList<Bean>(); 

     // add values to display 

     for (int i = inputs.size(); i < display.size(); i++) { 
      inputs.add(""); 
     } 

     return display; 
    } 

    // for testing inputs 
    public void testInputs() { 
     for (String input : inputs) { 
      System.out.println(">>>>>" + input); 
     } 
    } 

} 

XHTML

<ui:repeat value="#{dataController.display()}" varStatus="idx" ...> 
    ... 
    <h:inputText value="#{dataController.inputs[idx.index]}" style="width:200px;height:30px;margin-bottom:15px;" autocomplete="off"></h:inputText> 
    ... 
</ui:repeat> 

<p:commandButton value="Test Inputs" action="#{dataController.testInputs}" update="@form" /> 

は、この情報がお役に立てば幸いです。

+0

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

+0

** ** dataController.display()**は** List **を返すメソッドで、init()の初期表示メソッドは、別のメソッド呼び出しの後に呼び出す必要があるため、初期化できません。 – Spandana

+0

ネストされた** UI:リピート**を使用することができるかどうか、または他のアプローチを提案することはできますか? – Spandana

関連する問題