2017-06-11 7 views
0
@Controller 
@RequestMapping(value = "/myProject") 
public class myClassController { 

    @Autowired 
    Mydata data; 
    @RequestMapping(method = RequestMethod.GET, value = "/mydetails/{id}") 
    public @ResponseBody Mydata mymethod(@PathVariable(value = "id") String id, 
             HttpServletRequest request) { 
     data.setId(id); 
     return data; 
    } 
} 
@Component 
class Mydata { 
    private String Id; 

    public String getId() { 
     return Id; 
    } 

    public void setId(String s) { 
     this.Id= Id; 
    } 
} 

質問 ここで私は「ニック・マイデータ」をオートワイヤリング、およびMyMethodはで()していますを設定した後、私はidがデバッグ中に、いくつかの値を持つ見ることができています。 値を設定すると、nullになります。 ie)data.getId()がnullを返しています。 pls note: 'data'はnullではありません。 私は新しいを使用してMydataをインスタンス化していますが、正常に動作します。 私のオートワイヤリングの問題は何ですか?助けてください。Autowiredインスタンスのプロパティがnullであっても値

+0

この問題とは関係なく、アプローチを再考する必要があります。あなたがここにいるものは安全に踏み外されないかもしれません。 – Henry

答えて

2

Springとオートワイヤリングに関するエラーではありません。
単なる割り当てエラーです。

ここでは、フィールドにパラメータを割り当てない:

public void setId(String s) { 
    this.Id= Id; 
} 

あなたが自分自身にフィールドを割り当てます。それは効果がありません。

あなたは、むしろそれを行う必要があります。

public void setId(String s) { 
    this.Id= s; 
} 

そして、サイドノートとして、あなたが命名規則を尊重したい場合:変数名は小文字(idの代わりId)で始める必要があります。

+0

おっと!それはタイプミスです。@davidxxx –

+0

これは起こることです。一般的に、私はgetterとsetterを手動で記述したり変更したりするのではなく、IDEで再生成しようと努力しています。これらは非常に単純な方法で、私たちは手動の誤りを過小評価しています。 – davidxxx

+0

これはタイプミスで、私がここに投稿している間に入りました。私は自分のコードで正しく行いました。私のautowiringで何か問題を見つけることができますか? @davidxxx –

関連する問題