6

私は JSF を使用しており、関連付けられたマネージド Bean の文字列の値が 0 より大きい場合にのみレンダリングされるコンポーネントが必要です。私はこれをやっています:

rendered="#{tabbedToolbarBean.editor.selectedQuery.length() gt 0}"

さらに、getter のシグネチャselectedQuerypublic String getSelectedQuery(){}. 最新バージョンの weblogic サーバーで次のエラーが発生します。

エラー: 関数の長さに無効な接頭辞があるか、定義されていないデフォルトの名前空間を使用しています。プレフィックスを修正するか、jsp ドキュメントで、タグ ライブラリの名前空間を定義するタグ内に関数を配置します。

何が欠けていますか?グーグルで検索した後、あまり助けが得られません。

4

2 に答える 2

9

これは、お使いの環境が、括弧を使用して getter 以外のメソッドを呼び出す新しい EL 2.2 機能をサポートしていないことを意味します。

あなたの最善の策は、fn:length()代わりに JSTL を使用することです。

<html ... xmlns:fn="http://java.sun.com/jsp/jstl/functions">
...
rendered="#{fn:length(tabbedToolbarBean.editor.selectedQuery) gt 0}"

emptyまたは、 EL でキーワードを使用するだけです。違いは、null 性もチェックすることです。

rendered="#{not empty tabbedToolbarBean.editor.selectedQuery}"

以下も参照してください。

于 2013-03-29T13:21:43.397 に答える
3

JSTL fn:length() 関数を試してください。

rendered="#{fn:length(tabbedToolbarBean.editor.selectedQuery) gt 0}"
于 2013-03-29T13:22:15.463 に答える