1

panelGrid(オブジェクトのリストから入力された人の 1 つ) をクリック可能にし、それに関連付けられた項目をバッキング Bean に送信する必要があります。

私のHTMLはそうです:

<ui:repeat var="searchItem" value="#{bean.filteredSearchItems}" varStatus="searchResult">
    <h:panelGrid>
        <!-- I get some info here from the searchResult object -->
    </h:panelGrid>
    <f:ajax event="click" listener="{bean.clickFlight}" />
    <f:param name="lfi" value="#{searchResult.index}" />
</ui:repeat>

(バッキング Bean で) ajax 呼び出しを処理できる関数が必要であることを知っているclickSearchItem()ので、これらすべてをテストするために、バッキング Bean で次のことを行いました。

public void clickFlight()
{
    HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
String lfi = req.getParameter("lfi");

if (lfi == null)
    log.info("LFI WAS RETURNED AS NULL :(");

    log.info("HOPEFULLY AN INDEX OF SOME SORT!: " + lfi);
}

何も記録されていません - クリックは登録されません。他の誰かがこの問題を抱えていますか? 誰もそれを解決する方法を知っていますか?

4

1 に答える 1

3

を実装するコンポーネントにネストする<f:ajax>必要がありますClientBehaviorHolder<h:panelGrid>そのために( HTML を生成する)を使用する場合は、コンポーネント自体に を<table>ネストする必要があります。<f:ajax>

<h:panelGrid>
    <f:ajax event="click" listener="{bean.clickFlight}" />

    <!-- I get some info here from the searchResult object -->
</h:panelGrid>

はとの<f:param>レンダラーによってのみ認識されます。EL 2.2 をサポートする Servlet 3.0 互換コンテナー (Tomcat 7、Glassfish 3、JBoss 6/7 など) をターゲットにしている場合は、代わりにそれをメソッド引数として渡すことができます。<h:outputFormat><h:commandXxx>

<h:panelGrid>
    <f:ajax event="click" listener="{bean.clickFlight(searchResult.index)}" />

    <!-- I get some info here from the searchResult object -->
</h:panelGrid>

必要に応じて、オブジェクト全体を渡すこともできます。

<h:panelGrid>
    <f:ajax event="click" listener="{bean.clickFlight(searchResult)}" />

    <!-- I get some info here from the searchResult object -->
</h:panelGrid>

<f:param>それ自体が必要な場合の代替手段は、<h:commandLink>代わりに使用することです。

<h:commandLink>
    <f:ajax event="click" listener="{bean.clickFlight(searchResult)}" />
    <f:param name="lfi" value="#{searchResult.index}" />

    <h:panelGroup>
        <!-- I get some info here from the searchResult object -->
    </h:panelGroup>
</h:commandLink>
于 2013-08-30T10:49:20.317 に答える