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
このURL
viewAll
(JSPページ)を叩きながらRepositiry
クラスからfirst
とsecond
のデータを表示するようになっているが、それはエラーに
エラーを返している
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から値を取得することですが、それは起きていない、私はそこに間違っているが、それを見つけることができていませんこの問題を手伝ってもらえますか?
最高のお礼
なぜリクエストURLに ';'を付けていますか?それを削除してみてください –
@deendayalGargあなたは答えとして投稿することができますし、私はそれを受け入れるよ –
が答えとして追加されます。ありがとう。 –