0

ドキュメントにはパラメータがサポートされていると書かれていますが、例では使用されており、ドキュメントからのこれの代わりにc:と$を使用している場所はわかりませんhl#

<h:inputText value="#{userNumberBean.userNumber('5')}">

ELの$vs#について私が知っているのは、右辺値と左辺値に関係しているということだけです。これは、#スタイルを使用するときにさらに説明が必要になる可能性があります。typ $ ...のEL式がパラメーターを受け取る方法と、パラメーターを使用して非ゲッター非セッターを呼び出す方法を探しています。たとえば、リクエストコンテキストでBeanから定数静的文字列をフェッチします。

#は$と比較して何をしますか?$を使用したい場合、ELでパラメーターを使用するにはどうすればよいですか?ELに移行したいスクリプトレットは、ELで実行したいようなもの<%= Constants.CONSTANT %>です<%= object.method(parameter) %>

4

1 に答える 1

4

この#{}構文は、Java EE の MVC フレームワーク JSFでのみ使用されることになっています。JSP EL、JSF EL、統合 EL の違いも参照してください。${}古い JSP の構文に固執するだけです。

引数付きのメソッドの呼び出しに関しては、これは Servlet 3.0 / EL 2.2 で導入されました。WAS 8 は Servlet 3.0 コンテナーであるため、すぐにサポートする必要があります。web.xmlサーブレット 3.0 仕様バージョンに準拠していると宣言されていることを確認する必要があるだけです。それ以外の場合、コンテナは で示されるバージョンに一致するフォールバック モードで実行されweb.xmlます。適切な Servlet 3.0web.xml宣言は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <!-- Config here. -->

</web-app>

このようにして、${object.method(param)}動作する必要があります。

EL での定数の参照は別の話です。これは、将来の Java EE 7 / Servlet 3.1 の一部である EL 3.0 で導入される予定です (将来の WAS 9 または 10 でサポートされる可能性があります)。カスタムタグライブラリのフレーバーや、それらを に保持することによる解決策がありますMap。すべて、この回答で詳細に説明されています: How to reference constants in EL?

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

于 2012-05-24T17:17:44.463 に答える