2016-08-29 9 views
1

springMVCを学習していて、urlと呼び出すときに行列変数を使用できないという問題が発生しました。controllerにも当てはまらず、基本的に期待されるコードをトリガしません春に行列変数を使用できません

Controllerクラス

@Autowired 
    ProductRepositiry productRepositiry; 

@RequestMapping("/filter/{path}") 
    public String getFiltered(@MatrixVariable(pathVar = "path") Map<String, List<String>> filterParms, Model model) { 
     model.addAttribute("items", productRepositiry.getFilteredProducts(filterParms)); 

     return "viewAll"; 
    } 

Repositiryクラス

012:私は、以下のクラスを持っています
private List<Item> list = new ArrayList<>(); 

    public List<Item> getList() { 

     Item first = new Item(); 
     first.setItemOne("firstOne"); 
     first.setItemTwo("firstTwo"); 
     first.setItemThree("firstThree"); 

     Item second = new Item(); 

     second.setItemOne("seconeOne"); 
     second.setItemTwo("firstTwo"); 
     second.setItemThree("secondThree"); 

     Item third = new Item(); 
     third.setItemOne("thirdOne"); 
     third.setItemTwo("thirdTwo"); 
     third.setItemThree("thirdThree"); 

     Item four = new Item(); 
     four.setItemOne("fourOne"); 
     four.setItemTwo("fourTwo"); 
     four.setItemThree("thirdThree"); 

     list.add(first); 
     list.add(second); 
     list.add(third); 
     list.add(four); 
     return list; 
    } 

    public Set<Item> getFilteredProducts(Map<String, List<String>> filterParms) { 
     Set<String> keys = filterParms.keySet(); 
     Set<Item> itemOne = new HashSet<>(); 
     Set<Item> itemTwo = new HashSet<>(); 

     if (keys.contains("item")) { 
      for (String one : filterParms.get("item")) { 
       for (Item i : list) { 
        if (one.equalsIgnoreCase(i.getItemTwo())) 
         itemOne.add(i); 
       } 
      } 
     } else 
      throw new NullPointerException("value not found"); 
     if (keys.contains("one")) { 
      for (String two : filterParms.get("one")) { 
       for (Item i : list) { 
        if (two.equalsIgnoreCase(i.getItemThree())) { 
         itemTwo.add(i); 
        } 
       } 
      } 
     } 

     itemOne.addAll(itemTwo); 
     for (Item i : itemOne) { 
      System.out.println(i.getItemOne()); 
     } 
     return itemOne; 
    } 
} 

URL

http://localhost:8080/Matrix_Variables/filter;item=firstTwo

このURLviewAll(JSPページ)を叩きながらRepositiryクラスからfirstsecondのデータを表示するようになっているが、それはエラーに

エラーを返している

HTTP Status 404 - 

type Status report 

message 

description The requested resource is not available. 

Apache Tomcat/8.0.36 

("/")でこのプロジェクトを実行しているときはうまくいきますが、行列変数を導入すると機能しません。

のDispatcherServlet-servlet.xml

<mvc:annotation-driven enable-matrix-variables="true" /> 
    <context:component-scan base-package="com" /> 
    <bean 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="suffix" value=".jsp" /> 
     <property name="prefix" value="/view/" /> 
    </bean> 

私が欲しいのは、表示する行列変数を使用してrepositiryから値を取得することですが、それは起きていない、私はそこに間違っているが、それを見つけることができていませんこの問題を手伝ってもらえますか?

最高のお礼

+1

なぜリクエストURLに ';'を付けていますか?それを削除してみてください –

+0

@deendayalGargあなたは答えとして投稿することができますし、私はそれを受け入れるよ –

+0

が答えとして追加されます。ありがとう。 –

答えて

0

あなたは ";"を使用しています。リクエストURLで代わりに "/"を使用してください。

関連する問題