データベース値からドロップダウンを設定する必要があるアプリケーションで struts 1.1 を使用しており、以下の jsp を表示するアクションでフォーム Bean に設定しています。
<td width="80%" class="formfield" valign='top'>
<html:select property="selectedUsedByUserName">
<html:option value="" >-</html:option>
<html:optionsCollection property="usedByUserList" label="name" value="staffNo"/>
</html:select>
</td>
そしてフォームビーンでは、ゲッターとセッターの下で使用しています。
private UserDTO selectedUsedByUser = null;
private HashMap usedByUserListMap = new HashMap();
public UserDTO[] getUsedByUserList() {
return (UserDTO[]) usedByUserListMap.values().toArray(new UserDTO[0]);
}
public void setUsedByUserList(UserDTO[] usedByUserList) {
usedByUserListMap.clear();
if (usedByUserList != null) {
for (int i = 0; i < usedByUserList.length; i++) {
usedByUserListMap.put(
String.valueOf(usedByUserList[i].getStaffNo()),
usedByUserList[i]);
}
}
}
public String getSelectedUsedByUserName() {
String selectedUsedByUserName = null;
UserDTO tempSelectedUsedByUser = getSelectedUsedByUser();
if (tempSelectedUsedByUser != null) {
selectedUsedByUserName = String.valueOf(tempSelectedUsedByUser
.getStaffNo());
}
return selectedUsedByUserName;
}
public void setSelectedUsedByUserName(String string) {
UserDTO tempSelectedUsedByUserName = null;
if (string != null) {
tempSelectedUsedByUserName = (UserDTO) usedByUserListMap
.get(string);
}
setSelectedUsedByUser(tempSelectedUsedByUserName);
}
public UserDTO getSelectedUsedByUser() {
return selectedUsedByUser;
}
public void setSelectedUsedByUser(UserDTO usedByUser) {
this.selectedUsedByUser = usedByUser;
}
しかし、例外のスタック トレースを出力すると、以下が表示されます。この例外の理由を教えてください。
TLD またはタグ ファイルによると、属性プロパティは、org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:78) でのタグ選択に必須です。 java:373) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:201) で org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:833) で org.apache.jasper .compiler.Node$CustomTag.accept(Node.java:1501) at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2291) at org.apache.jasper.compiler.Node$Visitor.visitBody (Node.java:2341) org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:870) で org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1501) でorg.apache.jasper.compiler.Node$Nodes.visit(Node.java:2291) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2341) で org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2347) で org.apache.jasper .compiler.Node$Root.accept(Node.java:498) at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2291) at org.apache.jasper.compiler.Validator.validate(Validator) .java:1853) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:210) で org.apache.jasper.compiler.Compiler.compile(Compiler.java:435) で org.apache.jasper. JspCompilationContext.compile(JspCompilationContext.java:608) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:360) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) org .apache.jasper.servlet.JspServlet.service(JspServlet.java:380) javax.servlet.http.HttpServlet.org.apache.catalina.core.ApplicationFilterChain.servletService のサービス (HttpServlet.java:847)
jsp select タグで属性プロパティを設定済みです。jsp がロードされる前に値を設定する必要がありますか。populate のドロップダウン後に選択されたオプションを追跡するために使用すると思いますか? 値を選択すると、ストラットは選択した値を正しく設定しますか?