0

私はこのバッキングビーンを持っています:

@ManagedBean(name="testController")
public class TestController {
    private String foo = "fooTest";
    private List<A> alist;

    public A fetchAlist(int index)  {
        alist = ListInflater.get(alist, A.class, index); //only used for incrementing list

        return alist.get(index);
    }

    public String getFoo() {
        return foo;
    }

    public void setFoo(String foo) {
        this.foo = foo;
    }
}

次のように、ページ内のプロパティとして fetchAlist(x) にアクセスして、クラス A からプロパティを呼び出したいと思います。

<html xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"  
    xmlns:p="http://primefaces.org/ui"> 

 <h:head><title>Test</title></h:head>
 <h:body>
  <h:form>
    Test List
    <p:inputText value="#{testController.fetchAlist(2).aparam}" /><br /><br />
  </h:form>
</h:body>
</html>

残念ながら、EL はこのリストをプロパティとして認識しますが、プロパティではなくメソッドであるため、まだ機能しません。そのような呼び出しを達成する可能性はありますか?

[更新]
これはすべてh:inputTextで機能することがわかったので、これは PrimeFaces のバグでしょうか?

4

1 に答える 1

1

中括弧表記を使用して、リスト項目をインデックスで参照できます。

@ManagedBean
public class TestController {

    private List<A> alist;

    @PostConstruct
    public void init() {
        alist = createItSomehow();
    }

    public List<A> getAlist()  {
        return alist;
    }

}

と:

<p:inputText value="#{testController.alist[2].aparam}" />

何らかの理由で各リスト項目の遅延ロードを実行したい場合は、メソッドListで目的のジョブを実行するカスタム実装を提供することをお勧めしますList#get(int)

于 2012-10-18T15:35:26.903 に答える