URLの一部をStrutsのアクションパラメータに抽出するための適切なワイルドカードパターンを見つけるのに問題があります。
これが私がアクションを設定する方法です。このパターンの目的は、最後の2つのパス要素と、それらに先行する可能性のあるすべての要素をキャプチャすることです。
<action name="**/*/*" class="com.example.ObjectAction">
<param name="filter">{1}</param>
<param name="type">{2}</param>
<param name="id">{3}</param>
</action>
URLを使用して呼び出すとchannels/123/transmissions/456、次の結果が得られます(アクションは、POJOに入力パラメーターを設定し、それをXMLとして返します)。
<result>
<filter>channels/123/transmissions</filter>
<id/>
<type>456</type>
</result>
そのはず:
<result>
<filter>channels/123</filter>
<id>456</id>
<type>transmissions</type>
</result>
さて、スラッシュを含む**すべての文字に一致するので、私のパターンではURLに一致する方法が複数あると思いますが、Strutsはたまたま空のままの文字を選択します。複数の可能な一致の動作はどこかで定義されていますか?パターンを曖昧さを少なくすることはできますか?これを行う別の方法はありますか?id
Struts2.0.8を実行しています。2.1.9にアップグレードすると正規表現が一致しますが、2.0.8を超えると、Strutsの依存関係とOSGi環境に問題が発生したため、今はそのバージョンを使用したいと思います。