0

actionListenercommandLinkからバッキング Bean にオブジェクトを渡す際に問題に直面しています。私が持っているのは、BeanMeasureBeanxhtmlその Bean を使用するファイルです。

私が持っているxhtmlで:

<p:selectOneListbox var="ch">
    <f:selectItems value="#{MeasureBean.checkpoints}" var="cp" itemValue="#{cp}" />
    <p:column>
        <h:outputText value="#{ch.name}" />
    </p:column>
    <p:column>
        <h:commandLink actionListener="#{MeasureBean.onCheckpointRemoved(ch)}">
            <h:graphicImage library="#{ctx.theme}" name="images/delete.gif" />
            <f:ajax event="click" />
        </h:commandLink>
    </p:column>
</p:selectOneListbox>

Beanにはメソッドがあります:

public void onCheckpointRemoved(Checkpoint viewCheckpoint) {
    System.out.println(viewCheckpoint);
    // TODO
}

問題は、タグを使用する<f:ajax>かどうかに関係なく、Bean のメソッドのパラメーター viewCheckpoint が常に null であることです。そのパラメーターを Bean に渡す必要があります。オブジェクト全体である必要はありません。チェックポイントの ID だけを渡すことができます。私も試したのは次のとおりです。

<h:commandLink actionListener="#{MeasureBean.onCheckpointRemoved(cp)}">

(cpの代わりにch)。しかし違いはありません。

助けてください、
マテウス

4

1 に答える 1

0

の値を設定するのを忘れました<p:selectOneListBox>。また、コンバーターを作成する必要があります。

PrimeFaces Showcaseでコンバーターの例を確認できます

<p:selectOneListbox var="ch" value="#{MeasureBean.checkPointTest}" converter="checkPointConverter">
<f:selectItems value="#{MeasureBean.checkpoints}" var="cp" itemValue="#{cp}" />
<p:column>
    <h:outputText value="#{ch.name}" />
</p:column>
<p:column>
    <h:commandLink actionListener="#{MeasureBean.onCheckpointRemoved(ch)}">
        <h:graphicImage library="#{ctx.theme}" name="images/delete.gif" />
        <f:ajax event="click" />
    </h:commandLink>
</p:column>
</p:selectOneListbox>

Checkpoint checkPointTest;
// getter/setter....
public void onCheckpointRemoved(Checkpoint viewCheckpoint) {
System.out.println(viewCheckpoint);
// TODO
}
于 2015-01-20T17:42:55.353 に答える