2017-06-06 13 views
0

申し訳ありませんが、誤ったエラーが投稿されたために投稿を編集しました。spring + hibernateを使用して1つのJSPファイルに2つの異なるSQLテーブルをロード

私はMySQL上に2つのテーブルを持っており、それらを両方とも単一のJSPページに表示しようとしています。

これを達成するために私は@RequestMappingを使用しています。

@RequestMapping(value = "/persons", method = RequestMethod.GET) 
public String listFolders(Model model) { 
    model.addAttribute("folders", new Folders()); 
    model.addAttribute("listFolders", this.foldersService.listFolders()); 
    return "person"; //name of the jsp page 
} 

@RequestMapping(value = "/folders", method = RequestMethod.GET) 
public String listPersons(Model model) { 
    model.addAttribute("person", new Person()); 
    model.addAttribute("listPersons", this.personService.listPersons()); 
    return "person"; //name of the jsp page 
} 

私は、同じJSPページに両方のテーブルを表示する必要がありますが、私は/フォルダにアクセスしようとした場合、それは文句を言わない人のテーブルを認識するので、私はerrosを取得します。私のJSPファイル内

アクション:

<c:if test="${!empty listPersons}"> 
<table class="tg"> 
<tr> 
    <th width="80">Person ID</th> 
    <th width="120">Person Name</th> 
    <th width="120">Person Country</th> 
</tr> 
<c:forEach items="${listPersons}" var="person"> 
    <tr> 
     <td>${person.id} </td> 
     <td>${person.name}</td> 
     <td>${person.country}</td> 

    </tr> 
</c:forEach> 
</table> 

そして:

<c:if test="${!empty listFolders}"> 
<table class="tg"> 
<tr> 
    <th width="80">Folders ID</th> 
    <th width="120">Folders Parent</th> 
</tr> 
<c:forEach items="${listFolders}" var="person"> 
    <tr> 
     <td>${folders.id} </td> 
     <td>${folders.parent}</td> 
    </tr> 
</c:forEach> 
</table> 

Erros:

Jun 06, 2017 5:53:07 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [appServlet] in context with path 
[/CitelumApp] threw exception [java.lang.IllegalStateException: Neither 
BindingResult nor plain target object for bean name 'person' available as 
request attribute] with root cause 
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'person' available as request attribute 
    at org.springframework.web.servlet.support.BindStatus.<init> 

私の質問は: 同じJSPページに2つの異なるSQLテーブルを表示する方法はありますか?

答えて

0

ルートは1回のアクションで指定されます。同じ値を使用して@RequestMapping(value = "/persons", method = RequestMethod.GET)を2回使用することはできません。人をlistOfFoldersなどのフォルダに変更してください。

@RequestMapping(value = "/folder", method = RequestMethod.GET) 
+0

ご回答いただきありがとうございます。 私はそれを変えることができます。しかし、私はいつも$ {person.name}や$ {person.id}のような関数を呼び出しているので、JSPファイルではエラーが発生します。 私は値/フォルダを置くと、それは人間のテーブルを認識しません –

+0

あなたのJSP(foreachループ)の一部を投稿することはできますか? –

+0

いくつかのコードを共有し、達成しようとしていることを詳しく説明します。あなたは 'model.addAttribute()'を一つのコントローラマッピングに入れて、そのコントローラマッピングだけを使用してみてください。 –

0

Boukobbaによると、エラーメッセージが実際に表示されます。同じURLと同じリクエストメソッドで2つのマッピングを持つことはできません。ディスパッチャー・サーブレットは、要求をルーティングするサーブレットを特定できません。あなたが変更することを検討して物事はあなたのRequestMethodたり、URLただし、一般的に、同じページにサービスを提供する2つのget要求を持つことのない点はありません

@RequestMapping(value = "/person", method = RequestMethod.GET) 
 
public String listFolders(@ModelAttribute("person") Person person, BindingResult personResult, @ModelAttribute("folders") Folders folders, BindingResult folderError, Model model) { 
 
    // you can access folders and person as new Object in JSP 
 
    
 
    model.addAttribute("listPersons", this.personService.listPersons()); 
 
    return "person"; //name of the jsp page 
 
} 
 

 
@RequestMapping(value = "/folders", method = RequestMethod.GET) 
 
public String listFolders(@ModelAttribute("person") Person person, BindingResult personResult, @ModelAttribute("folders") Folders folders, BindingResult folderError, Model model) { 
 
    // you can access folders and person as new Object in JSP 
 
    
 
    model.addAttribute("listFolders", this.foldersService.listFolders()); 
 
    
 
    return "person"; //name of the jsp page 
 
}

EDITです。ユーザーがフォルダリストまたは個人リストを必要とするかどうかを示す要求パラメータBooleanがあります。コントローラーでは、そのパラメーターに基づいて値を設定します。 JSPアクセスでは、対応するフォルダーまたは複数の人が同じパラメーターをチェックします。

+0

私はあなたが意味するものを見ています。 しかし、1つのGETで2つのテーブルを呼び出すにはどうすればよいですか? ありがとうございます。 –

関連する問題