我有一个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
的{{1}}属性中使用的语法(也就是说,你不能在那里使用三元运算符)。
有没有办法实现这种条件定位而不会使用setPropertyActionListener
乱丢我的代码?
P.S。如果这有帮助,我正在使用myfaces和richfaces。
答案 0 :(得分: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方法中完成这项工作。