4

私はこの珍しいシナリオを持っています:

そのためのプロパティとゲッターセッターがほとんどないregistrationVOがあります。たとえば、cityまたはbCityそれらのゲッターメソッドgetCity()getBCity()

JSPでは、スクリプトレットを使用してこれらのプロパティの値を表示しようとしましたが <%=registrationVO.getCity()%>、< %=registrationVO.getBCity()%>、正常に動作します。しかし、同じものを式言語に置き換えた ${registrationVO.city}ところ${registrationVO.bCity} 、registrationVOにプロパティ「bCity」が見つからないというエラーが発生しました。iaはbCityに再びscripletを使用し、出力を取得しました。

私はそれが命名規則のためであることを観察しました。「プロパティの2番目の文字が大文字の場合、式言語は使用できません」。私は多くの差分命名を試しましたが、これが私が見つけたものです。

このシナリオを確認してください。私の結論が正しいか間違っているかはわかりません。

ありがとう、DJ

4

1 に答える 1

8

getterメソッドのプロパティ名が少なくとも2つの大文字で始まる場合は、ELプロパティ名にもそれらの大文字をすべて使用する必要があります。特定のケースでは、それをに置き換える必要があります${registrationVO.BCity}。これは、Javabeans仕様の8.8章で指定されています。これがその章の抜粋です(私の強調):

8.8推測された名前の大文字化。

デザインパターンを使用してプロパティまたはイベント名を推測する場合、推測された名前を大文字にするために従うべきルールを決定する必要があります。通常のmixedCaseスタイルのJava名の途中から名前を抽出すると、デフォルトでは、名前は大文字で始まります。

Javaプログラマーは、通常の識別子を小文字で始めることに慣れています。活発なレビューアの意見により、プロパティ名とイベント名については、これと同じ従来のルールに従う必要があると確信しています。

したがって、既存のJava名の途中からプロパティまたはイベント名を抽出する場合、通常は最初の文字を小文字に変換します。ただし、すべての大文字の名前をときどき使用することをサポートするために、名前の最初の2文字が両方とも大文字であるかどうかを確認し、そうである場合はそのままにします。たとえば、

  • 「FooBah」は「fooBah」になります</li>
  • 「z」は「z」になります</li>
  • 「URL」は「URL」になります</li>

Introspector.decapitalizeこの変換ルールを実装するメソッドを提供します。

そうは言っても、私はむしろそれらの名前をもっと賢明なものに変更したいと思います。たぶんbirthCity(私がそれを正しく推測するなら)、あなたがちょうどうまく使うことができるように${registrationVO.birthCity}

于 2010-02-05T13:37:36.023 に答える