Java f:带条件的参数

Java f:带条件的参数,java,jsf,Java,Jsf,我有f:param如下所示 <f:param name="NDCID" value="#{selectedMedicationInfoBean.NDCID}"></f:param> <f:param name="insuranceID" value="#{selectedMedicationInfoBean.insurance.id}"></f:param> 无效。我们能阻止它吗?我不能在JSF表达式中使用turnery运算符 <f:par

我有
f:param
如下所示

<f:param name="NDCID" value="#{selectedMedicationInfoBean.NDCID}"></f:param>
<f:param name="insuranceID" value="#{selectedMedicationInfoBean.insurance.id}"></f:param>
无效。我们能阻止它吗?我不能在JSF表达式中使用turnery运算符

<f:param name="insuranceID" value="#{selectedMedicationInfoBean.insurance.id=null?'':selectedMedicationInfoBean.insurance.id}">

该异常是由旧的Mojarra 1.2错误引起的,当
值为
null
时,该错误确实会出现。它已经在Mojarra 1.2_05中修复(或者可能是之前或之后的一个版本,不确定了,已经超过6年了)。只需升级到最新的Mojarra 1.2,目前已在

另一种方法是将其包装在
中,但如果
selectedMedicationInfoBean
被声明为某个父级
UIData
组件的
var
,这显然很难看,也不会起作用


另一种方法是指定默认值
0
-1
,并在控制器中进行相应处理



升级是最好的选择。你不想坐在史前图书馆里。

功能要求到底是什么?这样我们就可以更好地理解为什么发送空/空参数会有问题。@BalusC,我已经将我的显示名设置为“Guruji”,这意味着“老师”,但我可以说你是这个JSF的Guruji。非常感谢您的快速响应。哦,您使用的是旧的JSF1.2。在未来的问题中,请提及确切的JSF impl/version。我会发布一个答案。但是如果我的链接在datatable中,它会不会发生冲突?如果
selectMEdicationInfoBean
是由它的
var
定义的,那么肯定会导致问题。你真的需要升级到一个更新的Mojarra 1.2版本。是的,这是一样的,它来自
var
:(
<f:param name="insuranceID" value="#{selectedMedicationInfoBean.insurance.id=null?'':selectedMedicationInfoBean.insurance.id}">
java.lang.NullPointerException
com.sun.faces.renderkit.RenderKitUtils.getCommandLinkOnClickScript(RenderKitUtils.java:934)
com.sun.faces.renderkit.html_basic.CommandLinkRenderer.getOnClickScript(CommandLinkRenderer.java:295)
com.sun.faces.renderkit.html_basic.CommandLinkRenderer.renderAsActive(CommandLinkRenderer.java:357)
com.sun.faces.renderkit.html_basic.CommandLinkRenderer.encodeBegin(CommandLinkRenderer.java:165)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788)
org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.renderChild(RendererUtils.java:433)
org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.renderChildren(RendererUtils.java:419)
org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.renderChild(RendererUtils.java:440)