MyBeanクラスには、getName()メソッドが含まれています。
XPageには#{MyBean.name}と評価される値があります。
MyBean.getValue( "Name")を呼び出し、MyBean.getName()を無視しています。私の質問は、この正しい操作ですか?
論理的には、一般化されたgetValue( "Name")を試す前に、より具体的なgetName()を試す必要があるようです。いくつかの研究をすると、getValue()がnullを返すと、特定のゲッターを探すと思われます。論理が疑わしいと思っても、少なくとも正しい結果が得られます。しかし、どちらも起こっていません。この回避策が必要でなければなりませんようにそれはいないようです
public Object getValue(final Object key) {
/* Following code added to check for specific getter before performing getValues() */
String propertyName = key.toString();
propertyName = propertyName.substring(0, 1).toUpperCase() + propertyName.substring(1);
Method method = null;
try {
method = this.getClass().getMethod("get" + propertyName, new Class[] {});
if (method != null) {
return method.invoke(this);
}
} catch (Exception e) {
// Do nothing
}
try {
method = this.getClass().getMethod("is" + propertyName, new Class[] {});
if (method != null) {
return method.invoke(this);
}
} catch (Exception e) {
}
/* --------------------------------------------- */
return getValues().get(key);
}
、私は何が起こっているのいくつかの基本的な誤解を持っている場合、私は思ったんだけど:
は、私は次のコードで問題を解決してきました。代わりに、私はこれを行うべきであるいくつかのより良い方法はありますか?
私はずっとそれを見ていませんが、Tim Tripconyはノーツイン9のビデオを作成し、正しく覚えていればこの正確な問題について話しました。基本的にTimが提案したものが最良の解決策です。 –
私がやっていることはティムの仕事から得たものです。私はそのNI9をしばらく見直していないので、これがどのように機能するかを誤って思い出したと思います。ありがとう! –