選択フォームに入力するために使用されたリストからオブジェクトを取得することに関して質問があります。
コントローラ:
@RequestMapping(value="listStaffMembers", method=RequestMethod.GET)
public String listStaffMembers(Model model){
model.addAttribute("staffList", this.personManager.getAllStaff());
Person person = new Person();
model.addAttribute("staffMember", person);
model.addAttribute("staffListSize", this.personManager.getAllStaff().size());
for (Person persons : this.personManager.getAllStaff())
System.out.println("Query Name:" + persons.getName() + " Id:"+persons.getId());
return "staffList";
}
Person オブジェクトを受け取っていないコントローラー:
@RequestMapping(value="staffMemberCRUD",
method=RequestMethod.POST)
//ModelAndView
public String staffMemberCRUD(@ModelAttribute("staffMember")Person person, Model model){
if(person!=null){
model.addAttribute("staffMember", person);
String name = person.getName();
int id = person.getId();
System.out.println("id: "+ id);
System.out.println("name: "+ name);
return "staffForm";
}else{
System.out.println("Person not saved, no entry, throwing null pointer exception");
throw new NullPointerException();
}
}
人物クラス:
@Entity(name="STAFF")
@NamedQuery(name="staffDetails.byId", query="from STAFF")// where userId = ?, then use position 0, then value
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Column(name="NAME")
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Person(int personId, String name){
setId(personId);
setName(name);
}
public Person(String name){
setName(name);
}
public Person(int Id){
setId(Id);
}
public Person(){
}
}
以下のフォームがオブジェクトを取得する方法の一部。id 値はありませんが、person の name 変数内に id が表示されます。
<FORM ACTION="staffMemberCRUD" METHOD=POST ><!-- onSubmit="return dropdown(this.gourl) -->
<table>
<tr>
<td>
<select name="staffMember">
<option value="">Choose</option>
<c:forEach items="${staffList}" var="prod">
<option value ="${prod.id}"><c:out value="${prod.id}"></c:out><c:out value="${prod.name}"></c:out></option>
</c:forEach>
</select>
</td>
</tr>
</table>
<INPUT TYPE=SUBMIT VALUE="Go">
</FORM>
Person クラスは、休止状態を使用してデータベースにデータを入力するためにも使用されますが、これは問題を混乱させる可能性がありますか?
listStaffMembers ドロップダウンをテストすると、現在機能していない投稿だけが表示されます。私はこれについてSpringのドキュメントを見てきましたが、ここまで来ました。これまでのところ私の人生で3日かかりましたが、良い結果は得られませんでした。前もって感謝します、ディーン
Latest Update:
更新された form:select、select パスが 'id' を投稿するようになったこと、および正しい form:form タグ、POST の後の次のビューの person オブジェクトに id フィールドが入力されたことに注意してください。データベースからそれらを再度検索します。
<form:form action="staffMemberCRUD" commandName="staffMember"><!-- onSubmit="return dropdown(this.gourl) -->
<table>
<tr>
<td>
<form:select path="id">
<form:option value="-1">Select your Staff Member</form:option>
<form:options items="${staffList}" itemLabel="name" itemValue="id" />
</form:select>
</td>
</tr>
</table>
<INPUT TYPE=SUBMIT VALUE="Go">
</form:form>
私は PropertyEditor がまだ前進していることを知っています。これが起こったとき、私は再び更新します。