我有一个页面,有一些下拉列表。当页面加载时,符合列表,会显示一些下拉列表。现在想要获取列表视图中的下拉列表选择值,但我无法获得下拉列表选择的值。我该怎么做才能获得这个价值?
任何人都可以告诉我如何实现这一目标。
html代码:
<table>
<tr wicket:id="tritems">
<th align="right"><span wicket:id="lblattr"></span></th>
<td><select wicket:id="attrvalue"></select></td>
</tr>
<tr><th align="right"><wicket:message key="targetsystem" /></th><td><select wicket:id="targetsystem" /></td></tr>
</table>
java代码:
final ListView trView=new ListView("tritems", new PropertyModel(this, "attrBizRoles")) {
private IBizRole attrvalueBizRole=new BizRole();
@Override
protected void populateItem(ListItem item) {
attrBizRole = (IBizRole) item.getModelObject();
item.add(new Label("lblattr", attrBizRole.getName()));
// this list can get from attr
attrvalueBizRoles = (List<IBizRole>) attrBizRole.getChildBizRole();
if (attrvalueBizRoles.size()>0) {
attrvalueBizRole=attrvalueBizRoles.get(0);
}
DropDownChoice attrvalueChoice = new DropDownChoice("attrvalue",new PropertyModel<IBizRole>(this, "attrvalueBizRole"), attrvalueBizRoles,new IChoiceRenderer() {
@Override
public Object getDisplayValue(Object object) {
attrvalueBizRole = (IBizRole) object;
return attrvalueBizRole.getName();
}
@Override
public String getIdValue(Object object, int index) {
attrvalueBizRole = (IBizRole) object;
return String.valueOf(attrvalueBizRole.getId());
}
});
item.add(attrvalueChoice);
}
};
感谢。
答案 0 :(得分:0)
PropertyModel(this,“attrvalueBizRole”)
似乎所有项目都写入列表视图的相同字段“attrvalueBizRole”。这可能不是你想要的。
你的IBizRole有没有属性,你可以直接绑定下拉列表吗?
答案 1 :(得分:0)
在添加“ListView”之前添加新的HiddenField 。它将存储选定的值:
//Note:: your model have to have "getRowSelected()" and "setRowSelected()" methods and "String rowSelected" field...
add(new HiddenField<String>("rowSelected", new PropertyModel<String>(getModelObject(), "rowSelected"))){
@Override
protected void onInitialize() {
add(new AjaxFormComponentUpdatingBehavior("change") {
@Override
protected void onEvent(AjaxRequestTarget target) {
getValue();//This method will return your selected value
}
});
}
});
在populateItems()中,您必须设置“数据值”属性:
@Override
protected void populateItem(ListItem item) {
//TODO::
item.add(new AttributeModifier("data-value",attrvalueBizRole.getId())
//TODO::
}
在您的HTML页面中,您必须在ListView之前添加隐藏字段
<input type="hidden" name="rowSelected" wicket:id="rowSelected"/>//<--
<tr wicket:id="tritems">
<th align="right"><span wicket:id="lblattr"></span></th>
<td><select wicket:id="attrvalue"></select></td>
</tr>