2

私の問題は、アクション内でのカスタム メソッドの作成に関するものです。RESTful WebService を実装するために、Struts2 と REST プラグインを使用しています。私のアクションクラスは次のとおりです。

public class SampleController implements ModelDriven<Object> {

private Sample sample = new Sample();
private Collection<Sample> list;
private int id;

public HttpHeaders create() {
    sdao.save(sample);
    return new DefaultHttpHeaders("create");
}   


public HttpHeaders destroy() {
    return new DefaultHttpHeaders("destroy");
}

public HttpHeaders show() {
    return new DefaultHttpHeaders("show").disableCaching();
}

public HttpHeaders update() {
    sdao.save(sample);
    return new DefaultHttpHeaders("update");
}

public HttpHeaders index() {
    list = sdao.findAll();
    return new DefaultHttpHeaders("index").disableCaching();
}

public Object getModel() {
    return (list != null ? list : sample);
}


public int getId() {
    return id;
}

public void setId(Integer id) {
    if (id != null) {
        this.sample = (Sample) sdao.findById(id);
    }
    this.id = id;
}

}

HTTP メソッド経由でリソースにGET正しくアクセスできます。カスタム メソッドを使用するには、検索リソースにパラメーターを渡すことによって呼び出されます。つまり、

public searchBySenderName(String senderName) {
    list.addAll(sdao.findBySenderName(senderName))
}    

正しい手順は何ですか?GET次の URLから呼び出すにはどうすればよいですか?

4

1 に答える 1

-1

GETこの場合、 ( index, show)の定義済みメソッドのいずれかからカスタム メソッドを呼び出すことができます。RESTful URL マッピング ロジックを参照してください。

RESTful URL マッピング ロジック

この Restful アクション マッパーは、Ruby-On-Rails REST スタイルのマッピングを適用します。メソッドが指定されていない場合 ('!' または 'method:' プレフィックスを介して)、メソッドは、URL と HTTP メソッドを調べる REST スタイルの規則を使用して「推測」されます。XML 構成が不要になるように、このマッパーが分離コード プラグインで正しく動作するように特別な注意が払われています。


もちろん、アクション マッパーが使用するメソッド名を変更することはできますが、アプリケーション全体に影響します。すでにリソース URL を使用している場合は、別の URL を使用してそのジョブを実行する必要があります。restこれは、厳密なマッパーを使用している場合です。混合モードでは、通常のアクションを何らかのアクション メソッドにマップできます。

REST および非 RESTful URL の Together 構成

REST のものと一緒に非 RESTful URL を使用し続けたい場合は、マッパーを利用する構成を提供する必要があります。

プラグインには独自の構成が含まれています。Rest プラグイン jar を見るstruts-plugin.xmlと、プラグインによって行われたいくつかの構成設定が表示されます。多くの場合、プラグインは必要に応じて設定するだけです。これらの設定を独自の でオーバーライドすることが頻繁に必要になる場合がありますstruts.xml


最後に、デフォルト設定で制限されているため、メソッドを経由!または接頭辞で指定しない場合があります。method:

于 2014-11-02T19:38:42.190 に答える