2012-03-07 4 views
2

私はstripesframeworkを使用してWebアプリケーションを開発しており、問題がありました。私は回避策を見つけましたが、なぜそれが起こっているのかを知りたいのです。ストライプが必要なイベントハンドラを呼び出さない

私はsubject_typeとsubject_nameの変更は、アクションが呼び出された対象ページに基づいて

@UrlBinding("/subject/{subject_type}/{subject_name}") 
public class SubjectActionBean extends ActionBean { 
    private String subjectType; 
    private String subjectName; 
    @Validate(required = true) 
    public void setSubjectName(String subjectName) { 
     this.subjectName = subjectName; 
    } 

    @Validate(required = true) 
    public void setSubjectType(String subjectType) { 
     this.subjectType = subjectType; 
    } 
    @DefaultHandler 
    public Resolution view() { 
     return new Resolution(); 
    } 
} 

のようなクラスを書きました。したがって、呼び出しはlocalhost/subject/applied/mathとなります。

ここまでうまくいきました。問題は、私はremoveメソッド

@HandlesEvent("remove") 
    public void removeSubject() { 
} 

を作成しようとしたときの状況と、この時点ストライプで を削除/ localhostの/対象/適用/数学を使用して、それを呼び出しコールへのハンドラが存在しないことを文句を始めともありますデフォルトのハンドラはありません。

だから、私はパスに「{subject_type}/{subject_nameを}」を取り出し、パラメータとして、およびメソッド内にそれらを渡すには、使用してそれらを展開:

getContext().getRequest().getParameter(); 

これは、removeメソッドが呼び出されるようになりました。

「{subject_type}/{subject_name}」のストライプがremoveメソッドを見つけられなかった理由を今質問しました。

答えて

4

を次のように@UrlBindingを変更してみてください:{$event}ストライプなし

@UrlBinding("/subject/{subject_type}/{subject_name}/{$event}") 

は、URLパラメータの一部がイベントことになっていることが分からないです。

また、あなたが助けlocalhost/subject/applied/math?remove=

希望にアクセスするには(現在の@UrlBindingを)試すことができますテストします。

関連する問題