0

我有一个h:commandButton需要在 bean 中设置一个属性。根据变量的值,我可能需要设置不同的属性。这是我尝试过的代码

<h:commandButton value="Procedi">
    <f:ajax event="click" />
    <f:setPropertyActionListener
        target="#{comparisonSide eq 'Left' ? compareManaged.optionalLeft : compareManaged.optionalRight}"
        value="#{comparisonSide eq 'Left' ? optionalManaged.selectedOptionalsLeft : optionalManaged.selectedOptionalsRight }" />
</h:commandButton>

这似乎不起作用,因为我尝试在target属性中使用的语法setPropertyActionListener(也就是说,你不能在那里使用三元运算符)。

有没有一种方法可以实现这种条件定位,而不会在我的代码中乱扔c:if's?

PS如果这有帮助,我正在使用myfaces和richfaces。

4

1 回答 1

0

正如您在评论中正确指出的那样,问题是该target属性确定了设置值的属性,而 JSF 找不到它。

您可以将两个属性更新拆分为两个单独的<f:setPropertyActionListener>实例,每个操作侦听器使用相关值更新相关属性。

<f:setPropertyActionListener
    target="#{compareManaged.optionalLeft}"
    value="#{comparisonSide eq 'Left' ? optionalManaged.selectedOptionalsLeft : '' }" />
<f:setPropertyActionListener
    target="#{compareManaged.optionalRight}"
    value="#{comparisonSide eq 'Left' ? '' : optionalManaged.selectedOptionalsRight }" />

当然,您也可以直接在您的操作或 actionlistener 方法中完成这项工作。

于 2013-10-16T12:27:13.880 回答