【问题标题】:JSF EL nested ternary operatorJSF EL 嵌套三元运算符
【发布时间】:2014-10-02 00:47:21
【问题描述】:

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

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

这是我尝试过的:

<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 所说的那样有条件地设置它,但由于某种原因它不起作用。

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

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

谢谢。

【问题讨论】:

  • 将更复杂的逻辑移入控制器可能会更好。您的示例中的预期和实际输出是什么?
  • 输出没问题,除非我尝试创建新用户 - 它显示 New Physician 而不是 New User。
  • 你的逻辑看起来是正确的。我会把它分解成几个语句进行调试,确保输入是你所期望的。
  • 试试? #{((empty dto.id) ? (bean.isPhysician ? msg.physicianNewTitle : msg.userNewTitle) : (bean.isPhysician ? msg.physicianEditTitle : msg.userEditTitle))} : 抱歉我帮不上忙

标签: jsf el facelets ternary-operator


【解决方案1】:

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

因此,如果您需要在一个视图中选择超过 2 个条件 - 请尝试将其设置为:

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

或者只是将您的逻辑移动到一个 bean。 希望这对某人有所帮助。

干杯。

【讨论】:

    猜你喜欢
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多