1

さまざまなクラスにテンプレートを使用する必要があります。BeanクラスにはgetPrintResource()特定のクラスを拡張する場合のみがあるため、c:if内のコードの評価を回避しようとしています。

私はしようとしています

<c:if test="${bean instanceOf PrintableClass}">...

<c:if test="${! empty bean.printResource}">...

この要素の評価を避けるため

<c:if test="${...}">
   <tag:printResource id="printBtn"
    rendered="#{bean.printable}"
    resource="#{bean.printResource}" 
       label="#{msg.print}">
   </tag:printResource>
</c:if>

達成される唯一の結果はProperty "printResource" not found on *bean*


編集

c:ifの有効なテストを作成できたとしても、属性はとにかくresource評価されます。 私の質問は、テストが偽の場合にコードのブロックの評価を回避することについてですProperty "printResource" not found


たぶん私のデザインが間違っているか、これは不可能です...
ありがとう

4

2 に答える 2

0

それをチェックするカスタム EL 関数を作成します。何かのようなもの

<c:if test="${myFn:isPrintResourcePossible(bean)}">

EL 関数は、タグ ライブラリ記述子で宣言された、一部のクラスの単なる静的メソッドです。

チュートリアルについては、http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPIntro7.htmlを参照してください。

于 2012-07-10T10:36:26.430 に答える