3

Websphereで実行するプロジェクトを行っています。

このプロジェクトでは JSF/Facelets/Richfaces を使用しています。

ELなどからパラメーターを使用してメソッドを呼び出すことができるため、JBoss EL実装を使用したいと考えています。

... 通常、これは JBoss EL jar を取得し、これを web.xml に配置することによって実現されます。

 <context-param>
  <param-name>com.sun.faces.expressionFactory</param-name>
  <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
 </context-param>

しかし、これは機能していません...Websphereの問題なのか、それとも...???

メソッドにパラメーターを渡したELを解析できないというページに移動すると、スタックトレースが表示されます。

<a4j:commandLink value="Delete" action="#{mcsaAdmin.deleteLanguage(1234)}" />

スタックトレースを見ると、まだ標準の sun EL を使用しているようです:

Caused by: javax.el.ELException: Error Parsing: #{mcsaAdmin.deleteLanguage(1234)}
 at com.sun.el.lang.ExpressionBuilder.createNodeInternal(Unknown Source)
 at com.sun.el.lang.ExpressionBuilder.build(Unknown Source)
 at com.sun.el.lang.ExpressionBuilder.createMethodExpression(Unknown Source)
 at com.sun.el.ExpressionFactoryImpl.createMethodExpression(Unknown Source)
 at com.sun.facelets.tag.TagAttribute.getMethodExpression(TagAttribute.java:141)

上記の「org.jboss.el.E​​xpressionFactoryImpl」の代わりに「com.sun.el.E​​xpressionFactoryImpl」に注意してください...

私は明らかに間違ったことをしていますか?誰にもアイデアがあります...メジャーラプロジェクトの標準JSF実装、またはSun Webサイトとrichfaces 3.1.4およびfacelets 1.1.14で提供されているものを使用しています。

4

4 に答える 4

1

「com.sun.faces.expressionFactory」は JSF 実装固有であるため、おそらく問題は Websphere ではなく、JSF 実装にあります。正しいパラメーター名が「org.apache.myfaces.EXPRESSION_FACTORY」である MyFaces を使用したときに、同じ問題が発生しました。

于 2010-03-31T10:29:33.527 に答える
0

これは、クラスパススコーピングの問題が原因である可能性があります。jboss el jarをどこにコピーしましたか?

于 2010-01-06T23:41:56.013 に答える
0

あなたが正しいです。クラスパス/WEB-INF/libに jboss-el.jar を含め、web.xml で定義します

<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>

しかし、いくつかの制限があります。こちらをご覧ください

Expression Language について詳しく知りたい場合は、Extensing the Java EE Unified Expression Language with a Custom ELResolverおよびFAQ about Expression Languageを参照してください。

よろしく、

于 2010-01-07T01:09:30.347 に答える
0

クラスローダを正しく設定しましたか? websphere では、複数の設定でクラス ローダーを設定する必要があります。Web モジュールのクラスローダーを最後に親に設定し、アプリケーションのクラスローダーを最後に親に設定します。

両方が親の最後にない場合、独自の jar は使用されず、代わりに websphere で提供されるものを使用する可能性があります。

于 2012-12-31T10:51:02.047 に答える