私はスプリングブートを学び始めました。私は問題に直面しています。 id
のSpring MVC:パラメータとしての複合オブジェクト
RestTemplate request = new RestTemplate();
String info = request.getForObject("http://localhost:8080/?id=4", String.class);
値は無視されます。私はこのような何かをしようとすると、
public class Message {
private String message;
private int id;
private boolean good;
public Message() {}
public Message(int id) {this.id = id;}
public Message(String message) {this.message = message;}
public Message(boolean good) {this.good = good;}
public Message(String message, boolean good, int id) {
this.message = message;
this.good = good;
this.id = id;
}
public String getMessage() {
return message;
}
public int getId() {
return id;
}
public boolean isGood() {
return good;
}
}
そして:
@RestController
public class UserController {
@RequestMapping("/")
public String getMessageInfo(Message message) {
return "Id is " + message.getId() + ", message is " + message.getMessage() + ", parameter good is " + message.isGood();
}
}
クラスのメッセージ:私は、コードを次のようしています。 boolean good
パラメータ(たとえば、localhost:8080/?good=true
)でリクエストを送信すると、同じ問題が発生します。 Message(boolean)
/Message(int)
ではなく、デフォルトのコンストラクタと呼ばれます。しかし、私がlocalhost:8080/?message=1234
のようなことをすると無視されません。あなたは何が問題なのか説明できますか?
そして、もう一つ質問:私はlocalhost:8080/?message=1234&good=true&id=145
とは異なる方法でgetMessageInfo
にクラスMessage
のインスタンスを送ることができますか?私は3つ以上のパラメータがある場合?たとえば、クラスMessage
に100個のパラメータがあるとしますか?あなたはこのように使用することができます
注釈RequestParamまたはModelAttributeが入力ミスでない場合、その注釈がありません。 –
'getMessageInfo(@ModelAttribute(" message ")メッセージメッセージ)'を書きましたが、何も変わりませんでした。 – Anna
Springは常にデフォルトコンストラクタを呼び出し、パラメータには利用可能なセッタを使用します。あなたはそれらを持っていないので、何も要求から渡されることはありません。バインディングは、Java Beanの仕様に準拠したクラスでのみ動作します。 –