JSF EL嵌套三元运算符

时间:2014-08-08 13:55:48

标签: jsf el facelets ternary-operator

我有JSF 2.2,PrimeFaces 5.0 Web应用程序。

在我的页面上,我需要有条件地设置<ui:param/>。问题是标准的三元运算符是不够的,因为我有两个以上的选项可供选择。此单页用作两种类型用户的编辑和创建页面:普通用户和医生。

以下是我的尝试:

<ui:param name="edit_title"
    value="#{empty dto.id  ? 
(bean.isPhysician ? msg.physicianNewTitle : msg.userNewTitle) :
(bean.isPhysician ? msg.physicianEditTitle : msg.userEditTitle)}" />

dto.id为空且bean.isPhysician为假且我找不到问题或更好的解决方案时,结果显示错误的标题。试图像条件here那样有条件地设置它,但是由于某种原因它不起作用。

有谁知道如何解决这种麻烦?

每一个有用的答案都受到高度赞赏和评价。

谢谢。

1 个答案:

答案 0 :(得分:18)

好吧,伙计们,我发现了导致错误行为的原因,它与嵌套的三元运算符无关。这是对isPhysician变量的错误计算。

因此,如果您需要在视图中选择2个以上的条件 - 请尝试这样做:

<ui:param name="edit_title"
    value="#{empty dto.id  ? 
(bean.isPhysician ? msg.physicianNewTitle : msg.userNewTitle) :
(bean.isPhysician ? msg.physicianEditTitle : msg.userEditTitle)}" />

或者只是将您的逻辑移动到bean。 希望这有助于某人。

干杯。