2011-02-04 9 views
2

私はこれらの2つのURLを異なるアクションにルーティングしようとしています。我々は、Struts 1.2を使用している:
/ABC-DEF /製品
/ABC-DEFstruts-config.xmlで正規表現を使用できますか?

を私が最初にこのアクションを入れてみました:

<action path="/abc*/products" type="com.business.exampleAction"> 
    <forward name="success" path="/go"/> 
</action> 

とした後、この1:

<action path="/abc*" type="com.business.differentExampleAction"> 
    <forward name="success" path="/goElsewhere"/> 
</action> 

ですが、常に2番目のアクション(この場合はdifferentExampleAction)に移動します。 *や。(。*)のように*のさまざまな反復を試しましたが、実際にはまだ動作していないものは見つかりませんでした。

私が読んだところから、struts-configで許可される唯一の正規表現のような文字はワイルドカード記号(*と**)ですが、私は間違っていると思います。

答えて

1

残念ながら、Struts 1.xのワイルドカードについては正しいです... *の後には何も入れることはできません。 documentation section 4.10を参照してください。これは、Struts 1.xの多くの制限の1つです。これは、最初に動作するJava MVCフレームワークの1つです(明らかにいくつかの問題があります)。これがSpring MVC 3.xに切り替えることを決めた理由ですそれは私には、例えば、より多くの残りのようなURIを行うことができます:私は、これは簡単にStrutsの1.xで行うことができる方法を見ていない

/abc/product/{productId}/part/{partId} 

+0

実際には、struts-configで正規表現を使用できることがわかりました。彼らはあなたが期待したとおりに正確に動作しませんが、彼らは働きます。私はstruts-configを編集するときに自分のサイトを破壊しないことを確認するためにたくさんのテストを作成しなければなりませんでした。しかし、新しいフレームワークに移行するまでは、今のところ一緒になっているようです。 –

関連する問題