2

私はf:param以下のようにしています...

<f:param name="NDCID" value="#{selectedMedicationInfoBean.NDCID}"></f:param>
<f:param name="insuranceID" value="#{selectedMedicationInfoBean.insurance.id}"></f:param>

いくつかのケースでは

#{selectedMedicationInfoBean.insurance.id}

nullになります。それを防ぐことはできますか?JSF式内でターナリー演算子を使用できません。

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

他に方法はありますか?


機能要件:ページ1にのリンクがありdetailます。2ページ目に詳細情報が表示されます。引数として、約6つのパラメータを渡す必要があります。これらのパラメータに基づいて、詳細ページで情報が生成されます。

そして、問題はそれらの6つのパラメータから2がヌルになる可能性があり、以下のエラーの原因が表示されますpage1

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)
4

1 に答える 1

2

<f:param>この例外は、値が。の場合に実際に現れる古いMojarra1.2バグが原因で発生しますnull。これはMojarra1.2_05で修正されています(または、前または後の1つのバージョンである可能性がありますが、もうわかりません。6年以上前です)。現在1.2_15になっている最新のMojarra1.2にアップグレードするだけです。

別の方法は、それをでラップすることですが<c:if>、それは明らかに醜く、親コンポーネントのselectedMedicationInfoBeanとして宣言されている場合も機能しません。varUIData

<c:if test="${not empty selectedMedicationInfoBean.insurance.id}">
    <f:param name="insuranceID" value="#{selectedMedicationInfoBean.insurance.id}" />
</c:if>

もう1つの方法は、0またはのデフォルト値を指定し、-1それに応じてコントローラーで処理することです。

<f:param name="insuranceID" value="#{not empty selectedMedicationInfoBean.insurance.id ? selectedMedicationInfoBean.insurance.id : -1}" />

アップグレードが最良のオプションです。あなたは先史時代の図書館と一緒に座りたくありません。

于 2012-05-04T17:51:42.393 に答える