:
@Controller
public class SearchEntityController {
@RequestMapping(value = "/search", method = RequestMethod.GET)
public ModelAndView getEntityDemoByID(@ModelAttribute("search") Search search, BindingResult result) {
EntityDemo entityDemo = null;
Map<String, Object> model = new HashMap<String, Object>();
if (search.getId() != null) {
int id = Integer.parseInt(search.getId());
entityDemo = DBHelper.getEntityDemo(id);
model.put("entityDemo", entityDemo);
}
return new ModelAndView(new RedirectView(pageIWantToRedirectTo), model);
}
}
次に、あなたのJSPで、あなたが使用することができますJSTL
を入力し、${entityDemo.name}
のように入力します。name
は、EntityDemo
クラスが適切なGetter
(これはpublic String getName(){return this.name;}
です)と一緒にいると仮定しています。私の知る限り
、コントローラのメソッドは、それらのいずれかが、ビューの名前を表すString
値、そうでないような\foo\bar\myPage.jsp
や、全体ModelAndView
オブジェクトを返す、全体のオブジェクトを返しません(オブジェクトの2種類があり、そのうちの一つがしていますportlet
はフルネームで、もう1つはservlet
です。この場合、フルネームでservlet
のものを使用する必要があります。わかりやすくするために、フルネームと言うとき、そのパッケージが含まれる名前を意味します。あなたが探しているものが好きであれば、springframework...servlet.ModelAndView
などである
編集:送信時にリダイレクトする場合は、コントローラを2つ作成する必要があります.1つはフォームをレンダリングし、もう1つはフォームが送信されるとリダイレクトされます。
JSPページに関しては、xmlファイル名がdispatcher-servlet.xml
である必要があります。名前はweb.xml
の設定によって異なる場合がありますが、すべての構造は<servletname>-servlet.xml
です。 viewResolver
という名前のプロパティがあるはずです(ただし、これは当てはまるはずですが、特定のIDEはあまり多くのデータを格納しませんが、NetbeansなどのIDEはほとんどの初期設定を行います)。これはあなたのviews
で動作する別のコントローラです。コントローラーで指定したview
の名前の前後にアイテムが自動的に追加されます。通常、接頭辞はpages/jsp/
、接尾辞は.jsp
です。したがって、あなたが次のパスpages/jsp/myPage.jsp
のページを持っているなら、あなたのコントローラーを渡す必要があるのはmyPage
でしょう。ページへのフルパスは、ビューリゾルバによって作成されます。 URL全体を渡しても、それでも追加情報が残るため、正しいパスを指定してもページが見つからない場合があります。
@Michael:私は自分の答えを変更しました。春のXMLファイルは非常に重要であり、ほとんどの場合、ソリューションが機能していない理由があります。一度それを取得すると、Springが開発をスピードアップすることがわかります。 – npinti
乾杯。私はついにそれを働かせました。私は実際に2つのメソッドを持つ1つのコントローラを使用しています。フォームを表すクラスをフォームのページに表示するクラスと、エンティティをロードしてモデルに(結果ページのために)配置するメソッドを配置するメソッドです。 – Michael
@マイケル:そうです、あなたは同じクラス(コントローラ)を使って複数のメソッドを持つことができます。私の答えが助けてくれてうれしい。 – npinti