Jsf 通过<;p:selectOneListbox变量=“0”;中国"&燃气轮机;作为<;h:commandLink行动>;

Jsf 通过<;p:selectOneListbox变量=“0”;中国"&燃气轮机;作为<;h:commandLink行动>;,jsf,primefaces,commandlink,selectonelistbox,Jsf,Primefaces,Commandlink,Selectonelistbox,我在commandLink中将对象从actionListener传递到支持bean时遇到问题。我拥有的是一个beanMeasureBean和一个使用该bean的xhtml文件 在xhtml中,我有: <p:selectOneListbox var="ch"> <f:selectItems value="#{MeasureBean.checkpoints}" var="cp" itemValue="#{cp}" /> <p:column>

我在commandLink中将对象从
actionListener
传递到支持bean时遇到问题。我拥有的是一个bean
MeasureBean
和一个使用该bean的
xhtml
文件

在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中方法的参数viewCheckpoint总是空的。我需要将该参数传递给bean。它不必是整个对象,只允许传递检查点的id。我也尝试过的是:

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

cp
而不是
ch
)。但没有区别

请帮忙,

Mateusz

您忘记设置
的值。此外,您还必须创建一个转换器

您可以在中查看转换器示例


谢谢佩利森。我试过你的建议,但现在列表框完全没有呈现内容。盒子里没有东西。我认为在列表框的定义中需要
标记。请再次检查答案!现在这是一个更准确的拍摄:)谢谢!我也是这么做的,不是吗?唯一的区别是价值和转换器的存在。。。编辑:我用JS“黑客”解决了这个问题。我添加了
,我用json-click事件设置了该值,然后调用bean的方法<代码>现在它就像一个符咒
<h:commandLink actionListener="#{MeasureBean.onCheckpointRemoved(cp)}">
<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
}