我尝试使用Struts填充选择下拉列表,但它不起作用:
我有我的动作类:
private Integer anneeResultat;
private List<AnneeResultat> anneeResultatList = new ArrayList<AnneeResultat>();
public Integer getAnneeResultat() {
return anneeResultat;
}
public void setAnneeResultat(Integer anneeResultat) {
this.anneeResultat = anneeResultat;
}
public List<AnneeResultat> getAnneeResultatList() {
this.anneeResultatList.add(new AnneeResultat(2005,"2005"));
this.anneeResultatList.add(new AnneeResultat(2006,"2006"));
this.anneeResultatList.add(new AnneeResultat(2007,"2007"));
this.anneeResultatList.add(new AnneeResultat(2008,"2008"));
this.anneeResultatList.add(new AnneeResultat(2009,"2009"));
this.anneeResultatList.add(new AnneeResultat(2010,"2010"));
this.anneeResultatList.add(new AnneeResultat(2011,"2011"));
return this.anneeResultatList;
}
public void setAnneeResultatsList(List<AnneeResultat> anneeResultatList) {
this.anneeResultatList = anneeResultatList;
}
public String execute(){
return SUCCESS;
}
以下是AnneeResultat班:
public class AnneeResultat {
private Integer keyAnnee;
private String valueAnnee;
public AnneeResultat() {
}
public AnneeResultat(Integer key, String value) {
super();
this.keyAnnee = key;
this.valueAnnee = value;
}
public Integer getKey() {
return keyAnnee;
}
public void setKey(Integer key) {
this.keyAnnee = key;
}
public String getValue() {
return valueAnnee;
}
public void setValue(String value) {
this.valueAnnee = value;
}
}
这是我在jsp页面上使用的select标签。我在页面上使用了瓷砖。这是我页面上的第一个版本:
<s:select name="anneeResultat" label="Année de résultats" list="anneeResultatList" listKey="keyAnnee" listValue="valueAnnee"></s:select>
结果是,在我的页面中,select标签会生成一个带空元素的选择框。我看不到选择框上的值。没有价值可见。 生成的代码是:
<select name="anneeResultat" id="choices_anneeResultat">
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select>
当我使用以下选择标记时:
<s:select name="anneeResultat" label="Année de résultats" list="anneeResultatList" key="keyAnnee" value="valueAnnee"></s:select>
Hashcode打印在选择框列表中。
生成的代码是:
<select name="anneeResultat" id="choices_anneeResultat">
<option value="fr.si2m.occ.dao.model.ui.AnneeResultat@1b209bc">fr.si2m.occ.dao.model.ui.AnneeResultat@1b209bc</option>
<option value="fr.si2m.occ.dao.model.ui.AnneeResultat@19d5723">fr.si2m.occ.dao.model.ui.AnneeResultat@19d5723</option>
<option value="fr.si2m.occ.dao.model.ui.AnneeResultat@c3bba9">fr.si2m.occ.dao.model.ui.AnneeResultat@c3bba9</option>
<option value="fr.si2m.occ.dao.model.ui.AnneeResultat@5554a3">fr.si2m.occ.dao.model.ui.AnneeResultat@5554a3</option>
<option value="fr.si2m.occ.dao.model.ui.AnneeResultat@27b326">fr.si2m.occ.dao.model.ui.AnneeResultat@27b326</option>
<option value="fr.si2m.occ.dao.model.ui.AnneeResultat@6283de">fr.si2m.occ.dao.model.ui.AnneeResultat@6283de</option>
<option value="fr.si2m.occ.dao.model.ui.AnneeResultat@1bf7b9c">fr.si2m.occ.dao.model.ui.AnneeResultat@1bf7b9c</option>
</select>
我不知道如何解决这个问题。如果有人有一些想法,欢迎你!
答案 0 :(得分:2)
只需从AnneeResultat
删除构造函数,然后在JSP中使用以下select标记。
<s:select name="anneeResultat" label="Année de résultats"
list="anneeResultatList" key="keyAnnee" value="valueAnnee"></s:select>
答案 1 :(得分:2)
使用&#34; listValue&#34;对于要显示的列。
<s:select name="anneeResultat" label="Année de résultats" list="anneeResultatList" key="keyAnnee" listValue="valueAnnee"></s:select>
答案 2 :(得分:0)
&#34; listKey = foo&#34;期望一个具有相同名称的getter,但以&#34; get&#34;命名。附加到值,例如的getFoo()。
将您的getter名称更改为&#34; getKeyAnnee&#34;或者将listKey更改为&#34; key&#34;