0

我在将对象从actionListenercommandLink 传递给支持 bean 时遇到问题。我拥有的是一个 beanMeasureBean和一个xhtml使用 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 回答