受信した構造化メッセージを Java オブジェクトに動的にマッピングするシステムを開発しています。現在、私は次の典型的な形式を持つ XML スキーマを介してこれを行っています。
<mapping>
<domainObject>company.app.MyObject</domainObject>
<attribute>
<domainAttribute>myAttr</domainAttribute>
<messageAttribute>root/config/component/param1</messageAttribute>
</attribute>
</mapping>
そのため、受信したメッセージには階層構造があり、特定のドメイン オブジェクト属性にマップされます。上記の場合、メッセージ要素root/config/component/param1
をドメイン属性にマッピングしていますMyObject.myAttr
私はすでにこれを行うコードを開発しましたが、Struts2 とその OGNL の使用について読んだ後、同じことをしているように見えます。私の質問は、OGNL が必要なオブジェクトを動的に構築してから、必要なすべての属性を設定できるかということです。もしそうなら、それはどのように行われますか?API ドキュメントを読むと、自分でオブジェクトを構築する必要があるようです。たとえば、このようなOGNL式を使用した場合
rootObj.childObj.param1
rootObj
理想的には、OGNL サービスで object を作成し、続いてを作成してからchildObj
、attribute を設定したいと考えていますparam1
。これはまさに Struts が Http リクエスト パラメータをドメイン オブジェクトに転送するために行うことなので、動的なオブジェクトの作成はどこかで行われているに違いありません。ただし、OGNL 式をいくつか試してみたところ、オブジェクトが作成されず、null オブジェクトの例外が発生しました。