【发布时间】: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